• 09-06-2010, 17:25:13
    #1
    Basit ve kullanisli bir cache sistemi. Mysql den aldığınız bilgileri normal bir şekilde ekrana yazdırmak yerine, bu betik ile yazdırıyorsunuz. Öncelikle veri sayfada görüntüleniyor ve tabloya kaydediliyor. Daha sonra sayfa yenilendiğinde verinin mysql de bulunup bulunmadığını kontrol ediyor. Eger tabloda bulunuyorsa, bunu ekrana yazdiriyor. Ve belirlediginiz süre icerisinde sayfa yenilendikten sonra icerigi yeniliyor, böylece her sayfa yenilendiginde yeniden sorgu yapmaniza gerek kalmiyor.

    Sql dökümü:
    CREATE TABLE IF NOT EXISTS `krip_cache` (
    `cache_baslik` varchar(16) NOT NULL,
    `cache_icerik` text NOT NULL,
    `cache_son` varchar(16) NOT NULL
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
    Fonksiyon:
    function krip_cache($icerik,$zaman,$baslik)
    {
    $sql = mysql_query("SELECT * FROM krip_cache WHERE cache_baslik='".$baslik."'");
    $kontrol=mysql_num_rows($sql);
    $a = time()+$zaman;
    if ($kontrol > 0)
    {
    $yaz = mysql_fetch_array($sql);
    if (time() < $yaz['cache_son'])
    {
    $krip = unserialize($yaz['cache_icerik']);
    }
    else
    {
    mysql_query("UPDATE krip_cache SET cache_icerik='".mysql_real_escape_string(serialize($icerik))."', cache_son='$a' WHERE cache_baslik='".$baslik."'");
    $krip = unserialize($yaz['cache_icerik']);
    }
    }
    else
    {
    $z = time()+$zaman;
    mysql_query("INSERT INTO krip_cache SET cache_son=".$z.",cache_baslik='".$baslik."',cache_icerik='".mysql_real_escape_string(serialize($icerik))."'");
    $krip = $icerik;
    }
    echo $krip;
    }
    Örnek:
    $sql = mysql_query("SELECT * FROM tablo");
    $yaz = mysql_fetch_array($sql);
    
    // echo $yaz['tablo_veri'];
    
    krip_cache($yaz['tablo_veri'],3600,"tablo1");
    Makalenin orjinal adresi: http://www.kript0.com/makale4-php-il...mi-yapimi.html
  • 09-06-2010, 21:09:13
    #2
    Yanlış anlamadıysam, cache'i okumak için de sorgu yapmak gerekiyor. Çünkü cache bilgileri veritabanına kaydediliyor. Eğer cache'in mantığını doğru biliyorsam, ne anlamı var ki bunun? Zaten bilgileri direk veritabanının ilgili tablosundan alabilirim.
  • 09-06-2010, 21:26:58
    #3
    Hkan adlı üyeden alıntı: mesajı görüntüle
    Yanlış anlamadıysam, cache'i okumak için de sorgu yapmak gerekiyor. Çünkü cache bilgileri veritabanına kaydediliyor. Eğer cache'in mantığını doğru biliyorsam, ne anlamı var ki bunun? Zaten bilgileri direk veritabanının ilgili tablosundan alabilirim.
    Verileri direkt tablodan alabilirsiniz tabiki. Ama döngü icinde bir sorgunuzun oldugunu düsünün, 10 tane sütundan veri cekiyorsunuz diyelim, id 1 den 10 a kadar tüm verileri cekmek yerine bunlari 1 kereligine kaydediyorsunuz, ve tek bir sütundan cekiyor icerigi. Eger icerigin yeniden mysql'e kaydolmasini istemiyorsani tabiki siz kodlari düzenleyip bunlari dosya icine kaydedebilecek hale getirebilirsiz.
  • 09-06-2010, 22:16:46
    #4
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Güzel kod tebrikler. Fakat Hkan'ın dediğinin ve sizin dediğinize de katılıyorum. En iyisi veriyi çekip bir TXT veya bir PHP dosyasında saklamak daha iyidir.
  • 09-06-2010, 23:25:16
    #5
    Şu dosya işlemlerini bir türlü beceremedim. 1, 2 seneye çözersem, yapabilirim inşallah.
  • 10-06-2010, 02:00:55
    #6
    Bir sayfayi oluşturmak için 20 sorgu yapmak var ya da cache sayesinde tek sorgu yapmak var. Ayrıca bu 20 sorgunun içine kasacak sorgularda dahil olursa ya da büyük database'ler ile çalışıyorsanız cache'in değerini o zaman anlarsiniz
  • 10-06-2010, 09:43:08
    #7
    Üyeliği durduruldu
    ek bir yorum olarak cache diye veritabanina kaydetmeniz cokta performans saglamaz. hatta bunu decode ettiginiz icin daha fazla yormus olursunuz. kararli sonuc almak icin bence bu onerilen yapida benchmark yapmak lazim