Emre Macit
ABOUT THE AUTHOR

Emre Macit

Ideasoft yazılım departmanı ve Ar-ge sorumlusu. Matematik mühendisi. İnternet üzerine, yazılım ve koda dair her şey hakkında araştırma yapmayı ve bunları denemeyi seviyor. Yazılıma dair yazılar ağırlıklı olmakla birlikte arama motorları, sosyal medya ve teknolojiyle ilgili diğer konularda da yazılar yazıyor. Bazı konular için vakit bulamamaktan şikayetçi..

a different php cache class : EmCache

çalıştığm bir projede 2 kişi olarak, cache mantığının nasıl çalışması üzerine araştırmalar yapıyorduk.

Derken bu php classını yazıverdim.

http://sourceforge.net/projects/emcache/

Genel olarak bu class, diğer cachelerdeki gibi herhangi bir dosyaya serialize edip yazmıyor. Bu cache’in mantığı bir php dosyası oluşturup, sanki kodu elle yazmış gibi, kodu oraya kendisinin yazması. Böylece Object olmayan tipler için serialize-unserialize maliyetinden de kurtarılmış olunuyor.

Birkaç değişkeni bir grupta toplayıp, cache dosyası sayısındaki artıştan, ve gruplamanın getirilerinden faydalanılabilir.

2-3 tane arrayiniz var ise ve bunlar çalışan kodunuzda genel olarak hep aynı anda çağrılması (oluşturulması) gerekiyorsa, burada grup özellikleri işinizi kolaylaştıracaktır. Kullanım olarak da çok bir farkı yoktur.

Genel olarak

$emc = new EmCache("path_to_my_cache_directory");

//simple caching

if(!$var = $emc->load("name_of_my_data")){

$emc->save($var,"name_of_my_data");

}

//group caching

$commit=false;

if(!$var2 = $emc->loadFromGroup("name_of_my_data")){

$emc->collect($var2,"name_of_my_data");

$commit=true;

}

if(!$var3 = $emc->loadFromGroup("another_name_of_my_data")){

$emc->collect($var3,"another_name_of_my_data");

$commit=true;

}

if($commit){

$emc->commitGroup();

}