• Bu site çerezler kullanır. Bu siteyi kullanmaya devam ederek çerez kullanımımızı kabul etmiş olursunuz. Daha fazla bilgi edin.

PHP Cache Sistemi

Konuyu Okuyan Kişiler (0)

inforesim

webmaster.tc
Katılım
4 Ağu 2012
Mesajlar
2,439
Beğeniler
0
#1
Bir süre önce bir gereksinimim için yazdığım bu fonksiyonu sizlerle paylaşmak istedim, Kodun kısaca mantığını anlatmak gerekirse ;

Bir değer ve Sonuç veriyorsunuz belirttiğiniz dk bunu cacheliyor ve Size direk okutuyor. Daha iyi anlamak istiyorsanız, Örnek inceleyebilirsiniz.

Fonksiyonumuz ;

PHP:
<?php
function cache($veri,$sonucx){
	$dizin = $_SERVER["DOCUMENT_ROOT"]."/cache/".md5($veri);
	if(empty($sonucx)){

		if(file_exists($dizin)){
			$dosya = json_decode(fgets(fopen($dizin,"r")));
			$sure = $dosya->zaman+60*25;
			if($sure<time()){
				unlink($dizin);
			}
			return stripslashes($dosya->icerik);
		}else{
			return "false";
		}
	}else{
		$sonuc = array();
		$sonuc["zaman"] = time();
		$sonuc["icerik"] = $sonucx;
        $sonucx    = json_encode($sonuc);
		$baglan=fopen ("$dizin",'a');
		if (!$baglan) {
			echo "<strong>AlpSQL :</strong> Dosya Oluşturulamadı ! cache Varlığını ve Yazılabilir Olduğuna Emin Olun...";
			exit();
		}
		if (!fputs ($baglan,$sonucx) ){
			echo "<strong>AlpSQL :</strong> Dosya Yazılamadı ! cache Yazılabilir olduğundan emin olun...";
			exit();
		}else{
			return stripslashes($sonuc["icerik"]);
		}
		fclose($baglan);
		
	}

}
?>
Fonksiyonumuz yukarıdadır (AlpSQL sınıfından düzenledim :p)

Kullanımı ise ;

PHP:
<?php
$veri = cache("deger","");
if($veri=="false"){
$veri = cache("deger","sonuç");
}else{
$veri = $veri;
}
?>
Kısacası, İlk olarak sonuç kısmını boş gönderiyoruz ve Sadece değer kısmını giriyoruz. Böyle bir cache var mı diye bakıyoruz, Eğer yok ise (false) değer ve sonucu yolluyoruz değişkene atıyoruz (değişkene atılmış veri de, Sonuça eşit olacaktır) eğer var ise $veri değişkeni false değil cacheli veri olarak dönecektir. yani $veri değişkenini direk ekrana basabilirsiniz.

Not : 60*25 buradaki 25 dakika cinsindendir. 10 dk yaparsanız, 10dk sonra o sorgu gelince cache silecektir.