Invalid argument

Cachet rechenintensive Vorgänge bei der Darstellung von Beiträgen. Dadurch wird die Performance des phpBB stabilisiert und teilweise sogar erheblich verbessert.

Moderator: Supporter

Invalid argument

Beitragvon Area51 » 11. Feb 2008 20:53

Ich hab das Problem, dass man manchmal beim Bearbeiten oder Löschen eines Beitrags einen Fehler erhählt, der in etwa so aussieht:

Warning: Invalid argument supplied for foreach() in /data/htdocs/web163/html/forum/includes/functions_post.php on line 584

Warning: Cannot modify header information - headers already sent by (output started at /data/htdocs/web163/html/forum/includes/functions_post.php:584) in /data/htdocs/web163/html/forum/includes/page_header.php on line 896

Warning: Cannot modify header information - headers already sent by (output started at /data/htdocs/web163/html/forum/includes/functions_post.php:584) in /data/htdocs/web163/html/forum/includes/page_header.php on line 898

Warning: Cannot modify header information - headers already sent by (output started at /data/htdocs/web163/html/forum/includes/functions_post.php:584) in /data/htdocs/web163/html/forum/includes/page_header.php on line 899


Ich hab den Einbau in die functions_post.php mehrmals geprüft, alles korrekt eingebunden.
Area51
User
 
Beiträge: 61
Registriert: 20. Mai 2007 13:16
Wohnort: Heidelberg

Beitragvon Patti » 14. Feb 2008 22:14

Hallo , hast du irgend welche mods schon in deinem forum verbaut , die sich vielleicht mit dem cache System beissen koennten ?
Patti
 
Beiträge: 23
Registriert: 14. Jul 2006 21:38
Wohnort: NRW

Beitragvon oxpus » 15. Feb 2008 09:57

Wie schaut denn die Zeile 584 Deiner includes/functions_posts.php (-/+ ca. 10-15 Zeilen) aus?
Hier scheint ein String anstelle ein Array verwendet zu werden, was foreach(); der Arbeitsweise nach nicht verarbeiten kann...
Kein Support ausserhalb der Foren!
No support outside the forums!
Benutzeravatar
oxpus
Partner
 
Beiträge: 610
Registriert: 14. Okt 2004 11:55
Wohnort: Bad Wildungen (halt so'n kleines Kurkaff)

Beitragvon Area51 » 15. Feb 2008 15:30

patti hat geschrieben:Hallo , hast du irgend welche mods schon in deinem forum verbaut , die sich vielleicht mit dem cache System beissen koennten ?

Kann nicht sein, da von keiner Mod diese Cahefiles benötigt und verarbeitet werden.

@Oxpus:
Hier:
Code: Alles auswählen
      $sql = "DELETE FROM " . POSTS_TABLE . "
         WHERE post_id = $post_id";
      if (!$db->sql_query($sql))
      {
         message_die(GENERAL_ERROR, 'Error in deleting post', '', __LINE__, __FILE__, $sql);
      }
      
      // Cache Posts
      foreach (glob($phpbb_root_path.'cache/posts/*post_'.$post_id.'.gz') as $cachefile)
      {
         @unlink($cachefile);
      }
      // Cache Posts

      $sql = "DELETE FROM " . POSTS_TEXT_TABLE . "
         WHERE post_id = $post_id";
      if (!$db->sql_query($sql))
      {
         message_die(GENERAL_ERROR, 'Error in deleting post', '', __LINE__, __FILE__, $sql);
      }
Area51
User
 
Beiträge: 61
Registriert: 20. Mai 2007 13:16
Wohnort: Heidelberg

Beitragvon oxpus » 15. Feb 2008 16:01

Tja, scheint so, als würden keine Post-Cachefiles vorhanden sein.
Syncronisiere doch mal im ACP den Cache.
Kein Support ausserhalb der Foren!
No support outside the forums!
Benutzeravatar
oxpus
Partner
 
Beiträge: 610
Registriert: 14. Okt 2004 11:55
Wohnort: Bad Wildungen (halt so'n kleines Kurkaff)

Beitragvon Area51 » 15. Feb 2008 16:20

0 ungültige Datenbankeinträge gefunden und berichtigt.

Das Problem taucht nur bei Beiträgen auf, deren Indikator gelb ist (also kein Cache erstellt wurde).
Area51
User
 
Beiträge: 61
Registriert: 20. Mai 2007 13:16
Wohnort: Heidelberg

Beitragvon oxpus » 15. Feb 2008 17:13

Oha, dann sollte AmigaLink dringend die aktuell erstellte Fassung (noch in der Closed Beta) bereitstellen, um diesen Fehler abzustellen.
Das hatte ich da nämlich schon gefixt, kenne aber die ältere Version nun nicht mehr so gut...

Hm, vielleicht hilft das hier:
Ersetze in der includes/functions_post.php den Block
Code: Alles auswählen
      // Cache Posts 
      foreach (glob($phpbb_root_path.'cache/posts/*post_'.$post_id.'.gz') as $cachefile) 
      { 
         @unlink($cachefile); 
      } 
      // Cache Posts

gegen
Code: Alles auswählen
   // Cache Posts
   $files = glob($cache_folder.$cstyle.'post_'.$post_id.'.gz');
   if ($files)
   {
      foreach ($files as $cachefile)
      {
           @unlink($cachefile);
      }
   }
   // Cache Posts
Kein Support ausserhalb der Foren!
No support outside the forums!
Benutzeravatar
oxpus
Partner
 
Beiträge: 610
Registriert: 14. Okt 2004 11:55
Wohnort: Bad Wildungen (halt so'n kleines Kurkaff)

Beitragvon Area51 » 15. Feb 2008 17:27

Danke dir, hat funktioniert :)
Area51
User
 
Beiträge: 61
Registriert: 20. Mai 2007 13:16
Wohnort: Heidelberg

Beitragvon Dungeonwatcher » 21. Mär 2008 15:57

Hi große Meister! 8)

Danke für den Hinweis auf dieses Thema...

Es hat zwar nichts mit meinem u.g. geschilderten Problem zu tun, aber dann halt hier. ;)

Ich hätte da mal ein Problemchen mit dem Pruning, welches ich heute zum ersten Mal seit bestehen meines Forums aktiviert habe. PHP gibt mir dabei folgende Meldung aus:

PHP Warning: Invalid argument supplied for foreach() in ...\includes\prune.php on line 92


Das betrifft die Zeile 6 in diesem Abschnitt:

Code: Alles auswählen
       while ( $row = $db->sql_fetchrow($result) ) 
       { 
          $sql_post .= ( ( $sql_post != '' ) ? ', ' : '' ) . $row['post_id']; 
 
          // Cache Posts 
          foreach (glob($phpbb_root_path.'cache/posts/*post_'.$row['post_id'].'.gz') as cachefile) 
          { 
             @unlink($cachefile); 
          } 
          // Cache Posts 
 
       }


Ich habe mir nochmals die Einbauanleitung vorgenommen, aber nichts gefunden was da falsch gelaufen ist. Das Prunen selber funktionierte, nur sind die Cache Dateien nicht gelöscht worden.

Wenn ich aber die PHP Warnung richtig verstehe, ist dort ein Parameter falsch. Hier rödelt die aktuelle PHP Version 5.2.5.

Wenn ich die o.g. Lösung probiere und dann die Cachefiles per ACP resynce gibt mir PHP diese Warnung aus:

PHP Warning: Invalid argument supplied or foreach() in ...\admin\cps-module_delete_unused_files.php on line 72


Das betrifft die Zeile 3:

Code: Alles auswählen
      if ($row['dont_cache'])
      {
         foreach (glob($phpbb_root_path.'cache/posts/*post_'.$row['post_id'].'.gz') as $file)
         {
            unlink($file);
            $files++;
         }
      }


Das automatische Prunen in den Foren funktioniert nach der o.g. Änderung in der functions_post.php ebenfalls nicht mehr. :cry:

Bye
Benutzeravatar
Dungeonwatcher
User
 
Beiträge: 95
Registriert: 4. Nov 2005 09:52
Wohnort: Berlin

Beitragvon oxpus » 21. Mär 2008 16:41

Was steht denn genau hier: http://www.amigalink.de/viewtopi ... =1322#9694 ?????
Kein Support ausserhalb der Foren!
No support outside the forums!
Benutzeravatar
oxpus
Partner
 
Beiträge: 610
Registriert: 14. Okt 2004 11:55
Wohnort: Bad Wildungen (halt so'n kleines Kurkaff)

Nächste

Zurück zu Cache Post System



Wer ist online?

Mitglieder in diesem Forum: Google [Bot] und 0 Gäste

cron