PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bestimmte Dateien nicht löschen


thensis
18.06.2009, 20:29:49
Hallo,

habe mich ohne Vorwissen ein klein wenig mit php beschäftigt, um folgendes Problem zu lösen: Der Cache unseres Shop speichert unzählige kleine Dateien und wird dabei langsamer. Nach dem Löschen der Dateimengen geht´s wieder. Das Löschen soll automatisch erfolgen per Cronjob.
Habe jetzt 2 Versionen gefunden und daran rumgespielt, bis es über den Browser schon mal funktionierte.

Version A

<?
function removeRekursiv($dir)
{
$dp = opendir($dir);
while($file = readdir($dp))
{
$name = $dir . "/" . $file;
if ($file != "." && $file != "..")
{
if (is_dir($name))
removeRekursiv ($name);
else
unlink($name);
}
}
closedir($dp);
// rmdir($dir); // Verzeichnis l?schen
}
removeRekursiv("cache");

?>


Version B

<?PHP
$strDir = './cache/';

$oDir = dir( $strDir );

while ( false !== ( $strFile = $oDir->read () ) )
{
if ( $strFile != '.' && $strFile != '..'
&& ! is_link ( $strDir . $strFile )
&& is_file ( $strDir . $strFile ) )
{
if ( @ unlink ( $strDir . $strFile ) )
{
}
else
{
}
}
}
$oDir->close();
?>

(Bei B sind unten zu viele Klammern... Ich finde nur nicht die überflüssige(n))

Jetzt das fehlende i-Tüpfelchen: Die beiden Dateien index.html und .htaccess sollen nicht gelöscht werden. Trotz vieler betrachteter Schnipsel und Tutorials fehlt mir die passende Sequenz und auch das entsprechende Wissen. Kann mir da jemand auf die Sprünge helfen? Danke!

DokuLeseHemmung
18.06.2009, 20:49:38
Einmal....
Und auch damit du mal siehst, dass man PHPCode auch formatiert posten kann...
$such_in = './cache'; // Verzeichnis, welches durchsucht werden soll
$verbotene = array('index.php','.htaccess');
$dir = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($such_in));

foreach($dir as $datei)
if($datei->isFile() && !in_array($datei->getFileName(),$verbotene))
unlink($datei->getPathName());


*ungetestet*