Problemlösung Cachedateien
Aus Wiki | modified eCommerce Shopsoftware
Zur Navigation springenZur Suche springenBenutzt man den Datenbankcache so füllt sich mit der Zeit das Verzeichnis cache/ zunehmend mit Dateien. Dies kann soweit führen, dass dieses Verzeichnis nicht mehr administrierbar ist. Mit folgendem Script lässt sich das Verzeichnis löschen.
Das Script unter dem Namen delcache.php ins Shoproot hochladen und aufrufen. Man kann es auch als Cronjob einrichten was dafür sorgt, dass das cache-Verzeichnis automatisch gelöscht wird. Im Script ist eine kleine Protokollfunktion integriert.
<?php
/*
delcache.php
Simples löschen der Cache-Ordner
ins Shop-Hauptverzeichnis hochladen
Aufruf: http://www.meinshop.de/delcache.php
Schreibt logdatei in http://www.meinshop.de/admin/delcache.log
Anschließend wieder vom Server löschen
*/
$dir1 = "cache/";
$dir2 = "templates_c/";
// Logdir aus document root und admin
define('LOGDIR', $_SERVER['DOCUMENT_ROOT'].'/log/');
clear_dir($dir1);
clear_dir($dir2);
echo "fertig!";
/**
* clear_dir()
*
* @param string $dir
* @param boolean $basefiles
*/
function clear_dir($dir, $basefiles = false) {
$dir = rtrim($dir, DIRECTORY_SEPARATOR).DIRECTORY_SEPARATOR;
$ignore_files = array('.htaccess', 'index.html');
if ($handle = opendir($dir)) {
$i = 0;
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
if (is_dir($dir.$file)) {
clear_dir($dir.$file, true);
rmdir($dir.$file);
} else {
if (!$basefiles && in_array($file, $ignore_files)) {
continue;
}
unlink($dir.$file);
}
}
$i++;
}
closedir($handle);
$file=fopen(LOGDIR."mod_delcache_".date("Y-m-d").".log", "a");
// Im log noch ein paar infos dazu (welcher Server und welcher DOCUMENT_ROOT
$d = date("Y-m-d H:i:s");
$s = "[$d] ".$_SERVER['SERVER_NAME']." - ".$_SERVER['DOCUMENT_ROOT']."/$dir - $i files deleted\n";
fwrite($file, $s);
echo "$s<br />";
fclose($file);
}
}
?>