Modify

Opened 6 years ago

Closed 6 years ago

#1701 closed Bug/Fehler (fixed)

clear_dir hat Probleme bei zu vollen verzeichnissen

Reported by: info@… Owned by: somebody
Priority: normal Milestone: modified-shop-2.0.5.0
Component: Shop Version: trunk
Keywords: Cc:
Blocked By: Blocking:

Description

Guten Morgen,

bei einem meiner Kunden war es nicht mehr möglich, das cache-Verzeichnis zu leeren, da es zu voll gelaufen ist.
die Aktuelle clear_dir-Funktion im Trunk hat es nicht geschafft.

Also kurz gegoogelt und das hier gefunden: http://tutorialspage.com/benchmarking-on-the-glob-and-readdir-php-functions/

Darauf hin habe ich die Funktion geändert:

function clear_dir($dir, $basefiles = false) {
    $dir = rtrim($dir, DIRECTORY_SEPARATOR).DIRECTORY_SEPARATOR;
    $ignore_files = array('.htaccess', 'index.html');
    if ($handle = opendir($dir)) {
      while (false !== ($file = readdir($handle))) {
        if ($file != "." && $file != "..") {
          if (is_dir($dir.$file)) {
            clear_dir($dir.$file, true);
            rmdir($dir.$file);
          } else {
            if(in_array($file, $ignore_files) && !$basefiles)
              continue;
            unlink($dir.$file);
          }
        }
      }
      closedir($handle);
    }
}

Damit hat es funktioniert. Ich teste es noch ein wenig.

Viele Grüße
Andreas

Attachments (0)

Change History (3)

comment:1 by info@…, 6 years ago

Mit der geänderten Funktion konnte ich knapp 10 Millionen Dateien im Cache-Verzeichnis löschen (Leistungsstarken Server und entsprechendes Timeout vorhanden)
Die alte Funktion liefen direkt in einen Fatal error, vermutlich aufgrund der Memory-Size.

Bleibt noch de Frage, wie gefährlich 10 Mio Files im Cache sind, beispielsweise bei 1und1 mit begrenzter Datei-Anzahl auf den Servern

comment:2 by Torsten Riemer, 6 years ago

Component: AdminShop
Milestone: modified-shop-2.0.5.0

Die Funktion wird auch im Installer verwendet und sollte dort dann auch optimiert werden.

comment:3 by Andreas Guder, 6 years ago

Resolution: fixed
Status: newclosed

In 12292:

fix #1701

Modify Ticket

Action
as closed The owner will remain somebody.
The resolution will be deleted. Next status will be 'reopened'.

Add Comment


E-mail address and name can be saved in the Preferences .
 
Note: See TracTickets for help on using tickets.