php, postgresql, mysql, javascript

java, jsf, jpa, jasper reports, pardus, linux, freebsd, ubuntu, solaris, damn small server

PHP ve XCache

Yorum yapılmadı

Uzun zamandır yazacak konu ve zaman bulamadığımdan yazmıyordum, lakin üzerinde çalıştığım bir uygulamada, resimleri bellekte tutmak zorunda kaldıktan sonra, yazmamaya daha fazla direnemedim.

Sayfada gösterilecek resimleri dinamik olarak çalışma anında üretmem gerekiyordu, ancak bu işin çok fazla işlemci gücü harcamasına sebep olacağını düşünerek tedirgin oluyordum. Daha sonra aklıma, bunları bir kere oluşturup, belirli bir süre bellekte tutup, kullanıcıya bellekten vermek geldi. Bir tamponlama uygulaması araken, Mehmet Şamlı'nın kitabında XCache konusunu gördüm.

Bu işi yapan başka eklentilerde var tabii ancak biz bu seferlik XCache üzerinde duracağız.

XCache, PHP'ye kurulan bir eklenti. PHPize komutları falan kullanılarak kuruluyor, ancak kurulumunu yazmayacağım, çünkü bende nasıl kurduğumu anlamadım :)

Önce XCache'nin nasıl çalıştığını anlayalım;

Diyelim ki, elinizde çok sık görüntülenen bir veri var. Bu veriyi string halinde bellekte istediğimiz kadar süre saklayıp, bu süre içerisinde veriyi isteyen kullanıcıya bellekten verebiliriz.

XCache'nin fonksiyonları aşağıdaki gibidir;

xcache_set(verinin_tampon_bellekteki_ismi String, veri String, tamponda_kalma_süresi integer);

String xcache_get(verinin_tampon_bellekteki_ismi String);

Bool xcache_isset(verinin_tampon_bellekteki_ismi String);

xcache_unset(verinin_tampon_bellekteki_ismi String);

XCache nerelerde işimize yarar;

-Veritabanından, anasayfada göstereceğiniz karmaşık yada büyük sonuçlar döndüren bir sorguyu, her sayfa yenilendiğinde, veritabanından sorgulamak yerine bellekten verebilirsiniz. Özellikle menüleri veritabanından karmaşık sorgularla oluşturuyorsanız, sorgunun sonucunda gelen diziyi serialize() fonksiyonuyla stringe çevirip xcache içerisine atabilirsiniz.

-Bu verilerle oluşturduğunuz HTML dosyası, her sayfa yenilendiğinde, her kullanıcıya gösterilecekse, bu HTML'yi bellekte saklayıp kullanıcılara bellekten verebilirsiniz. Özellikle veritabanı başka makinada yaşıyorsa, o zaman mükemmel hız kazanabilirsiniz.

-Eğer herhangi bir ayar yapmazsanız PHP Sessionları dosyada tutar. İsterseniz onları tampon bellekte tutarak hız kazanabilirsiniz.

-Herkese çok sayıda gösterilecek, fakat az yer kaplayacak resimleriniz varsa bunları da bellekte tutabilirsiniz. Zaten bir sonraki konumuz bu olacak.

Dikkat edeceğimiz nokta ise; bizim belleğe attığımız veriler, aksini belirtmediğimiz sürece bellekte bizim verdiğimiz sürede kalacak. Bu hem bellek kaplayacak, hem de veritabanında güncellenen veriler, sayfada anında güncellenmeyecek.  Tabii veritabanını güncellediğimizde bellekteki karşılıklarını da güncelleyebiliriz. Ama bu bize ek kod yükü getirir.

Yazan: Çağatay

Temmuz 17th, 2009 at 1:26 pm

Facebook'ta Paylaş



Yorum Yapın