Kişisel Bir Web Günlüğü

eburhan Cache class

eburhanBirçok durumda ya lokaldeki ya da uzaktaki bir kaynaktan (veritabanı, web servisi gibi) kendi web sayfamız içerisine büyük miktarda veriler çekeriz. Fakat her istekte bu veri çekme işlemini tekrarlamak web sayfamızı yavaşlatabilir. Peki bu durumda ne yapabiliriz?

Böyle durumlarda çoğunlukla şu adımlar izlenir:

  1. normal bir şekilde verileri çek
  2. çekilen verilerin bir kopyasını daha hızlı erişebileceğimiz yere kaydet (önbellek)
  3. belli bir süre doluncaya kadar verileri bu önbellek denilen yerden çek
  4. süre dolduğunda tekrar 1. adıma dön

Karışık gibi görünen ama aslında kolay olan bu döngüyü eburhan Cache class ile çok daha kolay bir şekilde yapabilirsiniz. Bu sınıf Apc, Eaccelerator, Xcache, File, Memcache veya Sqlite gibi en çok bilinen önbellek adaptörlerinden istediğiniz herhangi birisiyle çalışabilir. Kullanımı basittir. PHP 5.1+ gerektirir.

Örnek kullanımı

<?php
    require_once 'class/Cache.php';

    // file adaptörüne özgü ayarlar
    $confs = array(
        'maxTime' => 5000,
        'keyFunc' => 'md5',
        'dirPath' => './log/',
        'fileExt' => '.cache'
    );

    // sınıfı kullanıma hazırla
    $cache = Cache::factory('file', $confs);

    // önbellekte veri var mı yok mu?
    if( $cache->is_set('veri') ){
        $veri = $cache->get('veri');
    } else {
        $veri = file_get_contents('http://www.google.com.tr/');
        $cache->set('veri', $veri);
    }

    // veriyi ekrana yazdır
    echo $veri;
?>

Download & Dökümantasyon

eburhan Cache class isimli bu php sınıfını eBurhan Araçları sayfasından bilgisayarınıza indirebilirsiniz. İçerisinde sınıfı ayrıntılı anlatan bir döküman yer almaktadır (aşağıdaki resimdeki gibi). Yine de sormak istediğiniz veya eklemek istediğiniz birşey olursa buraya yorum olarak yazabilirsiniz. Faydalı olması dileyiğle ;)

7 Eylül 2010 Programlama Bugün 10 kez, toplamda ise 9.782 kez okundu. , , , ,
12 yorum var
  1. Merhaba; Php ile ilgileniyorum bu aralar. Yazılarınız gerçekten çokfaydalı. Çok teşekkürederim.
    Sormak istedigim asp.net de Cache yaparken bir sayfada isedigimiz yei Cache alabiliyoruz ve sayfanın bazı yerlerini dinamik bazı yerlerini Cache den getirebiliyoruz. Php de bunu yapmak mümkün mü?

  2. Teşekkürler Erhan abi.

  3. @Bülent
    php ile sayfanın herhangi yerini önbelleğe alabilirsiniz. bunun için ob_start() ile önbelleğe alınacak bölümün başlangıcını belirtiyoruz. Bölüm sonunda ise ob_get_contents() ve ob_end_clean() fonksiyonlarını kullanarak işlemi bitiyoruz. Örnek:

    ob_start();
    
    // burada önbelleğe alınacak içerik var
    
    $data = ob_get_contents();
    ob_end_clean();
    

    Artık $data değişkenini Cache sınıfına göndererek önbeleğe alınmasını sağlayabilirsin.

  4. İllaki beni OOP’a bulaştıracaksın. (: Ellerinize sağlık. :)

  5. cache sistemiyle ilgilenmeye baslamıstım güzel bir dokuman oldu teşekkurler

  6. Teşekkurler güzel bir class sanırım en yakın sürede inceliyorum

  7. Bu güzel çalışmanız başarınızı kanıtlıyor.

  8. Smarty kullanmadığımız scriptlerde işimize yarayacak bir sınıf olmuş.
    Teşekkürler…

  9. Önbellek neresi. Nerde tutuluyor veriler. PHP ile o tutulduğu yere nasıl yerleştiriyorsunuz verileri

  10. @Osman
    döküman‘da yazıyor verilerin nerede tutulduğu.

  11. Döküman bu mantığı gayet açıklayıcı nitelikte olmuş. Soru sormaya gerek bile kalmıyor :)

    Ellerinize sağlık, teşekkürler.

İçinizde kalmasın, siz de yorum yazın

Telif Hakkı © 2012 eburhan.com | Structure | XHTML