Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

File Cache ve zlib

Konu, 'PHP' kısmında anka00 tarafından paylaşıldı.

  1. anka00

    anka00 Üye

    Kayıt:
    3 Mayıs 2005
    Mesajlar:
    89
    Beğenilen Mesajlar:
    0
    Meslek:
    Esnaf
    Şehir:
    Adıyaman
    Merhaba arkadaşlar. 4 gündür yenilediğim sunucu sonrası php dosyalarımda bazı sorunlar oluştu. Bir türlü çözüm bulamadım. Sizden yardım istiyorum.
    File cache kullanıyorum
    Kodlar bölümü az olunca sorun yok ancak kod biraz fazla olunca cache den aldığı dosya yarım gösteriyor. Aşağıdaki adreste önbellekleme kısa sürelidir. Sayfa açıldıktan sonra sayfayı yenileyince bellekteki dosyaları açıyor. Lütfen yardımcı olunuz.
    Bitlis Hava Durumu 15 Günlük
    <?php
    if(extension_loaded('zlib')){
    echo ob_start('compress'); }
    $dosyaadi = "111.html";
    $cachefile = $_SERVER['DOCUMENT_ROOT']."\c\\".$dosyaadi;
    //$cachefile = 'cache/'.$dosyaadi; //Alternatif
    $cachetime = 0.002 * 60 * 60;
    if (file_exists($cachefile))
    { if(time() - $cachetime < filemtime($cachefile)) { readfile($cachefile);
    exit;
    }
    else { unlink($cachefile); } } ?>
    KODLAR Kodlar.....
    <? $fps = fopen($cachefile, 'w+');
    fwrite($fps, ob_get_contents());
    fclose($fps); if(extension_loaded('zlib')){ ob_end_flush();} ?>
     
    Son düzenleme: 17 Nisan 2016
  2. anka00

    anka00 Üye

    Kayıt:
    3 Mayıs 2005
    Mesajlar:
    89
    Beğenilen Mesajlar:
    0
    Meslek:
    Esnaf
    Şehir:
    Adıyaman
    Sorunun kaynağını buldum. fwrite ile yazılacak dosya 4kb ile sınırlı. Sayfam 4kb den büyük olduğu için yazmıyor.
    Bu limiti nasıl artırabilirim?
     
  3. yunus

    yunus Daimi Üye

    Kayıt:
    26 Şubat 2015
    Mesajlar:
    521
    Beğenilen Mesajlar:
    127
    1- fwrite fonksiyonu dönüş değeri olarak yazılan byte bilgisini döndürür. bu şekilde bir döngü içerisinde kullanarak verinin tamamının yazılmasını sağlaya bilirsin. Kılavuzdaki örnek kod:
    PHP:
    function fwrite_stream($fp$string) {
        for (
    $written 0$written strlen($string); $written += $fwrite) {
            
    $fwrite fwrite($fpsubstr($string$written));
            if (!
    $fwrite) {
                return 
    $fwrite;
            }
        }
        return 
    $written;
    }
    2- Yada bununla hiç uğraşmayıp fwrite() yerine file_put_contents() kullanabilirsin.
     
  4. anka00

    anka00 Üye

    Kayıt:
    3 Mayıs 2005
    Mesajlar:
    89
    Beğenilen Mesajlar:
    0
    Meslek:
    Esnaf
    Şehir:
    Adıyaman
    Cevap için teşekkürler. Sorunu tam olarak değilde kısmen çözdüm. Yazmada sorun yok. Ancak gzip ile sıkıştırma yaptığında 4kb den fazla sıkıştırmadığını farkettim. Gzip kodlarını kaldırınca sorunsuzca cache klasöründeki veriler silinip yazılabiliyor.
    Sıkıştırma için gerekli olan Window sunucumdaki "%Windir%\system32\inetsrv\gzip.dll" dosyası yok. zlib, gzip kullanmak veya yüklemek için hangi yolu izlemeliyim.