RSS
 

CodeIgniter – Memcache Object

28 Oct

Merhaba,

Memcache hakkında çok fazla detaya inmeyeceğim, zaten konumuzda direkt olarak Memcache Server değil. Özetle Memcache server, web uygulamalarında minimum seviyede I/O’ya touch etmek için, key:value şeklinde dictionary tarzın da çalışan bir caching server’dır. I/O’dan kastım HDD’dir. Peki I/O’ya touch etmiyorsa nereye yazıyor? Tahmin ettiğiniz gibi memory’ye yazmaktadır. Kurulum, konfigürasyon ve detaylı bilgi için biraz arama motorlarını kullanmanız gerekecek.

Araştırmaya buradan başlayabilirsiniz.

CodeIgniter üzerinde eğer sizde Memcached driver’nı kullanıp sinir olanlardansanız. Memcache kurup ekteki dosyayı application/libraries altına atarak kullanabilirsiniz. :)

Class’ın yapısı driver interface’i ile uyumludur, ilk driver olarak geliştirdim fakat sonra load problemi çıkarttığını gördüğümden library olarak ekledim. Siz “extends CI_Driver” diyerek Driver olarakta kullanabilirsiniz.

   Dosya yapısı: application/libraries/MEMCACHE

   Dosya adı: cacheserver.php

   Methodları ve açıklamaları;

public function __construct() - Memcache object’si create ediliyor ve başarılı bir şekilde oluşturulamazsa Exception fırlatıyor :)

public function get($id)Daha önceden cache’lediğiniz datayı geri döner.

public function save($id, $data, $ttl = 90, $flag = MEMCACHE_COMPRESSED)Yeni bir datayı cache’lemenizi sağlar.

public function delete($id)Mevcut bir data’yı cache memory’den silmenizi sağlar.

public function replace($id, $data, $ttl = 90, $flag = MEMCACHE_COMPRESSED)Mevcut bir datayı değiştirmenize yarar.

public function clean()Tüm cache memory’yi boşaltmaya yarar. *Dikkat ediniz!

public function cache_info($type = NULL)Cache’lenen datalar ile ilgili istatikleri ve bilgileri geri döner.

public function get_metadata($id)Bu method henüz kullanmadığından içini doldurmadım. Sürekli FALSE döner. :)

public function is_supported()Sisteminizde Memcache eklentisinin kurulu olup olmadığını check eder ve bool geri döner.

Basit bir örnek;

Kendi Controller’nız içerisinde $this->load->library(“MEMCACHE/CacheServer”, NULL, “CacheServer”); şeklinde object’i call edebilirsiniz.

    $fooString = "Bu cache'lenecek bir veridir!";
    if(!$this->CacheServer->get("c_fooStr")){
       $this->CacheServer->save("c_fooStr", $fooString, 5);
       print("Cache'lendi!");
    }else{
       print($this->CacheServer->get("c_fooStr");
       print("Zaten Cache'teydi!");
    }

Yukarıdaki kod 5 saniye boyunca $fooString değişkenini cache’leyecektir. Diğer methodlarıda siz deneyerek test edebilirsiniz. :)

Download Link: http://www.hakandamar.com/down/CI_MEMCACHE_DRIVER.rar

İyi Çalışmalar.

 
2 Comments

Posted in PHP

 

Leave a Reply

 

 
  1. HD

    28/10/2011 at 11:26

    Bu arada yazıda eklemedim, içerik karmaşası olmasın diye. Android development ile ilgili makalelere devam ediyorum en kısa sürede chapter 1′i yayınalayacağım.

    İyi Çalışmalar. :)

     
  2. Dannette Mccue

    26/01/2014 at 13:37

    I am sue that you surely research a lot before writing to this great platform appreciate you aking this work seriously