• 31-01-2010, 23:09:51
    #1
    Merhaba, aşağıdaki cache uygulamasında süresi dolan cache dosyasını nasıl sildirebiliriz ?

    Sayfanın en üstüne
    $filename = "%%-".md5($_SERVER['REQUEST_URI'])."-%%.html";
    $cachefile = "cache/".$filename;
    $cachetime = 3 * 60 * 60; // Cache Süresi
    if (file_exists($cachefile))
    {
    if(time() - $cachetime < filemtime($cachefile))
    {
    readfile($cachefile);
    exit;
    }
    else
    {
    unlink($cachefile);
    }
    }
    ob_start();
    en altına;
    $fp = fopen($cachefile, 'w+');
    fwrite($fp, ob_get_contents());
    fclose($fp);
    ob_end_flush();
  • 31-01-2010, 23:15:32
    #2
    Üyeliği durduruldu
    sizin mantiginizla zaten suresi dolunca yeni dosya olusturuyor
  • 31-01-2010, 23:29:43
    #3
    evet anladım şimdi. peki ben sayfanın üst tarafına ayrı bir cache dosyası, alttarafına ayrı bir cache dosyası oluşturmak için ne yapmalıyım?

    mesela "alt/".$filename; "ust/".$filename; şeklinde klasörlere atabilir.

    Bunu güvenlik kodu yenilenmediği için istiyorum. güvenlik kodu resim değil include("kod.php") şeklinde çağırıyorum. 15+2=? gibi bir soru(resim değil.)
  • 31-01-2010, 23:40:51
    #4
    Üyeliği durduruldu
    kullanici62 adlı üyeden alıntı: mesajı görüntüle
    evet anladım şimdi. peki ben sayfanın üst tarafına ayrı bir cache dosyası, alttarafına ayrı bir cache dosyası oluşturmak için ne yapmalıyım?

    mesela "alt/".$filename; "ust/".$filename; şeklinde klasörlere atabilir.

    Bunu güvenlik kodu yenilenmediği için istiyorum. güvenlik kodu resim değil include("kod.php") şeklinde çağırıyorum. 15+2=? gibi bir soru(resim değil.)
    bu tarz sayfalarda cache yapmamaniz onerilir genelde. ZAten file cache olayi daha cok sabit sayfalarda yapilir ana sayfa yada kayit listeleri yada kayit detayi gibi
  • 01-02-2010, 00:40:01
    #5
    süresi dolan dosyalar o dosya tekrar kullanıldığında silinir, eğer cache işlemini uygulayacağınız dosya etiket.php gibi bir dosya ise ve sistemde çok fazla etiket varsa her etiket sürekli kullanılmayacağı için cache klasörü zamanla şişebilir. başıma geldi ordan biliyorum

    şunu cachesil.php diye kaydedip her saat başı (ya da keyfinize göre 3 saat de olabilir) çalışacak şekilde cron eklerseniz cache klasörünüz düzenli olarak temizlenir.

    $klasor = $_SERVER['DOCUMENT_ROOT'].'/cache/'; // klasörün sonunda kesinlikle / olsun
    
    function klasor_temizle($klasor) {
    	$ac = opendir($klasor);
    	for(;false !== ($dosya = readdir($ac));)
    		if($dosya != '.' and $dosya != '..') {
    			$dosya2 = $klasor.$dosya;
    			if(is_dir($dosya2)) {
    				klasor_temizle($dosya2);
    				rmdir($dosya2);
    			}
    			else {
    				unlink($dosya2);
    			}
    	}
    	closedir($ac);
    }
    
    klasor_temizle($klasor);