Mi lehet ezzel a kóddal a gond?
<?php
$masodperc = 36000; //Másodpercek a törlésre
$ido = time();
$mappa = 'image/cache/data'; // Törölni való mappa tartalma
if ($megnyit = opendir( $mappa )) {
while (false !== ($fajl = readdir($megnyit))) {
$torles = $mappa . '/' . $fajl;
$utolsoellenor = fileatime($torles);
if( $utolsoellenor !== false )
if( ($ido - $utolsoellenor) >= $masodperc ) //Kéri a másodpercet
unlink($torles);
}
closedir($megnyit);
}
?>
Tehát, amint a kódbol is kiderül ennek az lenne a feladata, hogy bizonyos időközökben törölje a cache mappábol a fájlokat. Törli a fájlokat, de utána a hibakonzolban minden frissités után ez a hibaüzenet jelenik meg :
2011-05-03 23:07:04 - PHP Warning: unlink(image/cache/data/..) [<a href='function.unlink'>function.unlink</a>]: Is a directory in /home/bashanmo/public_html/catalog/controller/common/header.php on line 220
A 220 as sor ez: unlink($torles);
Ellenőriztem, hogy 777 es jogosultsága vane a cache nak az is rendben. Köszi előre is.
Az a baj, hogy a .. mappát ki akarja törölni. (Szülő könyvtár). Tegyél be egy if-et, ami figyeli, hogy a file neve ..-e.
if($torles != ".."){
unlink($torles);
}
Ez jó ötlet, viszont a file nevét nem tudom megadni, mert a mappában több ezer van. S azokat egybe kéne törölje.
Tehát ezek képek amikből a php más más méretüeket generál és menti ide. Pl: apple_cinema_30-38x38.jpg , apple_cinema_30-40x40.jpg apple_logo-150x150.jpg ...
Szerintem jól írta ez első, a . és a .. -ot ilyenkor mindig vizsgálni kell, a while-ban szereplő részt tedd egy nagy if-be:
if($fajl != "." && $fajl != "..")
Remélem jó lesz így.
Itt nézheted meg a readdirt- az example 2-ben írja is a . és .. kiszűrését
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!