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

Beitragvon Dungeonwatcher » 22. Mär 2008 07:58

Moin großer Meister! 8)

Nachdem ich nun 'ne halbe Stunde hoch und runter gelesen habe, fiel mir nun endlich auch der Zusammenhang auf. Ich habe einfach das foreach überlesen. :x

Ändere ich analog des o.a. Beispiels in der prune.php die betreffende Stelle:

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
        }


um in

Code: Alles auswählen
      while ( $row = $db->sql_fetchrow($result) )
      {
         $sql_post .= ( ( $sql_post != '' ) ? ', ' : '' ) . $row['post_id'];

         # // Cache Posts 
         $files = glob($cache_folder.$cstyle.'post_'.$post_id.'.gz'); 
         if ($files) 
         { 
            foreach ($files as $cachefile) 
            { 
               @unlink($cachefile); 
            } 
         } 
         // Cache Posts

      }


funktioniert schon mal das prunen ohne Fehlermeldung in der prune.php. :)

Es bleiben aber weiterhin die Cache Dateien erhalten und lassen sich auch nicht per ACP löschen. Wenn ich diese versuche über das ACP zu löschen gibt es diese Warnung:

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


Wie müsste dann dieser Bereich der bemängelten cps-module_delete_unused_files.php geändert werden?

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++;
          }
       }


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

Beitragvon oxpus » 22. Mär 2008 13:08

Kein Sinn für Logik:

Code: Alles auswählen
       if ($row['dont_cache']) 
       { 
          $files_cache = glob($phpbb_root_path.'cache/posts/*post_'.$row['post_id'].'.gz') as $file;
          if ($files_cache)
          {
           foreach ($files_cache as $cachefile)
             {
                unlink($cachefile);
                 $files++;
            }
          }
       }
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 Dungeonwatcher » 22. Mär 2008 15:30

oxpus hat geschrieben:Kein Sinn für Logik:


In PHP? Nicht die geringste. Wenn ich dies so umsetze, funktioniert das ACP Modul überhaupt nicht mehr:

PHP Parse error: syntax error, unexpected T_AS in ...\admin\cps-module_delete_unused_files.php on line 72


:cry:

Das betrifft diese Zeile:

Code: Alles auswählen
$files_cache = glob($phpbb_root_path.'cache/posts/*post_'.$row['post_id'].'.gz') as $file;


Ändere ich diese um in:

Code: Alles auswählen
$files = glob($cache_folder.$cstyle.'post_'.$post_id.'.gz');


startet das ACP Modul zwar wieder, aber beim aufrufen von "Überflüssige Cachedateien löschen" gibt's den nächsten Crash:

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


Das betrifft diesen Block:

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


Anschliessend meldet das ACP das es Dateien gelöscht hat. Nur welche frage ich mich, denn alle bemängelten Cache Dateien sind noch da.

Ändere ich diesen Block um in:

Code: Alles auswählen
         $files = glob($cache_folder.$cstyle.'post_'.$post_id.'.gz');
         if ($files_cache)
         {
            foreach ($files_cache as $cachefile)
            {
               unlink($cachefile);
               $files++;
            }
         }


knallt's gleich wieder in Zeile 50. Ändere ich auch diesen Block um, dann endlich tut PHP nicht mehr meckern. Allerdings werden noch immer keine Cache Dateien beim Aufruf von "Überflüssige Cachedateien löschen", gelöscht, obwohl dies behauptet wurde. Wenn ich dann resynce um die bemängelten 185 Cache Dateien zu entfernen, gibt es diese schöne Abschlußmeldung:

0 ungültige Datenbankeinträge gefunden und berichtigt.


D.h. PHP gibt sich nun endlich zufrieden, nur funktionieren tut's weiterhin nicht. :cry:
Benutzeravatar
Dungeonwatcher
User
 
Beiträge: 95
Registriert: 4. Nov 2005 09:52
Wohnort: Berlin

Beitragvon oxpus » 22. Mär 2008 18:48

So wäre es korrekter:
Code: Alles auswählen
         $files_cache = glob($cache_folder.$cstyle.'post_'.$post_id.'.gz');
         if ($files_cache)
         {
            foreach ($files_cache as $cachefile)
            {
               unlink($cachefile);
               $files++;
            }
         }
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 Dungeonwatcher » 22. Mär 2008 19:06

Hi! 8)

Ahja, damit gibt's zumindest keine falsche Meldung mehr beim Aufruf von "Überflüssige Cachedateien löschen". :)
Die Funktion "Resync" funktioniert jedoch weiterhin nicht:

0 ungültige Datenbankeinträge gefunden und berichtigt.


zu

Bei 185 Beiträgen stimmt die Cacheinformationen in der Datenbank nicht.
Benutzeravatar
Dungeonwatcher
User
 
Beiträge: 95
Registriert: 4. Nov 2005 09:52
Wohnort: Berlin

Beitragvon oxpus » 22. Mär 2008 22:20

Dann leere doch mal den Cache mittels FTP...
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 Dungeonwatcher » 22. Mär 2008 23:46

Hi! 8)

Also quasi den Cache kplt. neu aufbauen lassen!? Warum aber per FTP? Den Cache per ACP zu löschen sollte doch auch funktionieren.

Ich werde es morgen testen, aber das würde die Resync Funktion doch überflüssig machen?

Bye und schöne Ostern :)
Benutzeravatar
Dungeonwatcher
User
 
Beiträge: 95
Registriert: 4. Nov 2005 09:52
Wohnort: Berlin

Beitragvon oxpus » 23. Mär 2008 11:10

Resnyc und leeren per ACP kann fehlschlagen, dann wären z. B. CHMOD nicht korrekt gesetzt oder DB-Infos des MODs falsch...
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 Dungeonwatcher » 23. Mär 2008 11:56

Moin, moin! 8)

oxpus hat geschrieben:dann wären z. B. CHMOD nicht korrekt gesetzt


Das ist bei Windows auszuschließen

oder DB-Infos des MODs falsch...


Wie kann denn dies passieren bzw. wie kann dies verhindert werden?
Benutzeravatar
Dungeonwatcher
User
 
Beiträge: 95
Registriert: 4. Nov 2005 09:52
Wohnort: Berlin

Beitragvon oxpus » 23. Mär 2008 12:58

oxpus hat geschrieben:dann wären z. B. CHMOD nicht korrekt gesetzt


Das ist bei Windows auszuschließen

Sicher, daß dann PHP auch dir richtigen Rechte auf den Ordnern besitzt?
Du weisst schliesslich schon, daß auch unter Windows Verzeichnisrechte existieren?

oxpus hat geschrieben:oder DB-Infos des MODs falsch...


Wie kann denn dies passieren bzw. wie kann dies verhindert werden?

In dem man den Cache "manuell" lösche und den Cache auch im ACP "leert". Dann werden alle Informationen zum Cache aus der Datenbank entfernt und kann neu erstellt werden.
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)

VorherigeNächste

Zurück zu Cache Post System



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 9 Gäste

cron