Kezdőoldal » Számítástechnika » Programozás » Mi lehet ezzel a kóddal a gond?

Mi lehet ezzel a kóddal a gond?

Figyelt kérdés

<?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.


2011. máj. 3. 22:21
 1/4 VODKA0710 ***** válasza:

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);

}

2011. máj. 3. 22:54
Hasznos számodra ez a válasz?
 2/4 A kérdező kommentje:

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 ...

2011. máj. 4. 09:35
 3/4 A kérdező kommentje:
Viszont azt is megfigyeltem, hogy ha olyankor törli le mikor senki nem frissit azaz, a rendszernek nem kell új képet generálnia a fájlok törlése alatt akkor nincs hiba a következő törlésig. Pl ma éjjel 3 kor törölte akkor szerintem nem frissitett senki igy most nincs is hiba. Most délelőtt 1 kor ujra törölni fogja mert arra van beütemezve most vannak, igy újra a következő törlésig fogja nyomni a hibákat.
2011. máj. 4. 09:41
 4/4 anonim ***** válasza:

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

[link]

2011. máj. 6. 11:43
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!