İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

klasörü aç, Toplam dosya sayısını bul ve cache

maxcilopez

0
İyinet Üyesi
Katılım
27 Ekim 2006
Mesajlar
545
Reaction score
0
mrb arkadaşlar şöyle bir sorunum var. sitemde cache sistemi kullanıyorum
Kullandığım cache.php
PHP:
<?
$cachesystem = 'yes'; 
$rootpath='./'; 
$cache = 'cache'; 
$cachetime = (2*60) * 60; // 2 saat
function cache_check ($file = 'cachefile') { 
    global $cache,$rootpath,$cachesystem,$cacheident;
    if ($cachesystem == 'yes') {
        $cachefile = $rootpath.$cache . '/'.$file.'-'.$cacheident.'.html'; 
        $cachetime = 120 * 60; // 2 Hours
        $updatetime = $cachetime / 60 / 60;
        define(TIMENOW, time());
        if (file_exists($cachefile) && (TIMENOW - $cachetime < filemtime($cachefile))) 
        { 
            include_once($cachefile); 
            print("<p align=center><font class=small color=red><b>This content was last cached on ".date('Y-m-d H:i:s', filemtime($cachefile))." and updating every ".$updatetime." hours.</b></font></p>"); 
            exit; 
        } 
        ob_start(); 
    }else 
        return; 
} 
   
function cache_save  ($file = 'cachefile') { 
    global $cache,$rootpath,$cachesystem,$cacheident; 
    if ($cachesystem == 'yes') { 
        $cachefile = $rootpath.$cache . '/'.$file.'-'.$cacheident.'.html'; 
        $fp = fopen($cachefile, 'w'); 
        fwrite($fp, ob_get_contents());       
        fclose($fp);         
        ob_end_flush(); 
    }else 
        return; 
} 
//-------------------------------------
//---- CACHE MOD Extension by DarkElder 
//-------------------------------------
$cacheident = ($_SERVER['QUERY_STRING'] != '' ? md5($_SERVER['QUERY_STRING']) : 'noGet');
//-------------------------------------
//---- CACHE MOD v0.4 by xam 
//-------------------------------------  
?>

Sorun = Sorunum ise şu cache klasörünü içerisine maksimum 1998 adet dosya kaydediliyor daha fazlası yazılamayor.

Yapmak istediğim
=dizinde cache2 klasörü oluşturcam. sonra bu cache.php ye öyle bir eklenti gelecekki. Önce cache klasörünü açacak sonra toplam dosya sayısını çıkaracak toplam dosya sayısı 1998 den küçükse cache klaösrüne dosyayı yaz. Ama 1998 e eşitse cache2 klasörüne yaz.

Şimdiden yazdımlarınız için tşk.
 

OnurSQL

0
İyinet Üyesi
Katılım
29 Mart 2005
Mesajlar
2,025
Reaction score
1
Konum
ankara
FTP'de 1998 tane dosyayı görebiliyorsun, hepsini görmen için sunucu tabanlı değişiklik yapman lazım.
 

Angelo

0
İyinet Üyesi
Katılım
13 Aralık 2004
Mesajlar
9,603
Reaction score
111
Konum
AZ
PHP:
function cache_save  ($file = 'cachefile') { 
    global $cache,$rootpath,$cachesystem,$cacheident; 
    if ($cachesystem == 'yes') { 
       
       // EKLENTI
       $dir = opendir($rootpath.$cache);
       
       while (false !== ($files = readdir($dir))) {
           if ($files != "." AND $files != "..") {
           $counter++;
           }
       }

        if ($counter > 1998) {
        $cachefile = $rootpath.'cache2/'.$file.'-'.$cacheident.'.html';
        }

        else {
        $cachefile = $rootpath.$cache . '/'.$file.'-'.$cacheident.'.html';
        }

        // /EKLENTI


        $fp = fopen($cachefile, 'w'); 
        fwrite($fp, ob_get_contents());  
....
 

Angelo

0
İyinet Üyesi
Katılım
13 Aralık 2004
Mesajlar
9,603
Reaction score
111
Konum
AZ
if ($counter > 1998) {

bunun üstüne

echo "dosya: $counter";

yazıp sonucu bildir.
 

iyinet

Root
Admin
Hosting Firması
Katılım
2 Eylül 2002
Mesajlar
5,028
Reaction score
66
Konum
Sakarya
Cache deki dosya sayısı arttıkça bu sorunları yaşamaya devam edeceksin.
Bu cache sistemi yerine sana şöyle bir önerim var.
cache dizini altına aşağıdaki dizinleri yarat
0 1 2 3 4 5 6 7 8 9 a b c d e f
cache.php içinde dosya adlarını base64 encode edip ilk harfi ile eşleşen dizine at.
2 cache yerine 16 alt cache dizinin olmuş olur.
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Üst