Modify ↓
Opened 6 years ago
Closed 6 years ago
#1701 closed Bug/Fehler (fixed)
clear_dir hat Probleme bei zu vollen verzeichnissen
| Reported by: | 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 , 6 years ago
comment:2 by , 6 years ago
| Component: | Admin → Shop |
|---|---|
| Milestone: | → modified-shop-2.0.5.0 |
Die Funktion wird auch im Installer verwendet und sollte dort dann auch optimiert werden.
Note:
See TracTickets
for help on using tickets.

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