Php ile cache

Kategori: (Web Programlama) Yazan: admin, 14-09-2008

Etiketler : ,

Bir siteniz var. Hitiniz çok yüksek. Sunucunuz iyi değil veya yetmiyor. O zaman imdadınıza cache yetişecektir.  Cache ile (adından da anlaşılacağı üzere) sisteminizde sayfaları önceden kaydedip, gelen ziyaretçilere kaydedilmiş sayfayı göstererek, mysql sorgu, cpu kullanımınızı azaltabilirsiniz. Bu işlem php ile sanıldığı kadar zor değildir. Bu işlemi kendi yöntemimle değil, internette okuduğum bir makelenin kodlarıyla sizlere anlatmaya çalışacağım. (Benimki biraz karışık :) )

  1. <?
  2. $filename = "%%-".md5($_SERVER['REQUEST_URI'])."-%%.html";
  3. $cachefile = "cache/".$filename;
  4. $cachetime = 3 * 60 * 60; // Cache Süresi
  5. if (file_exists($cachefile))
  6. {
  7. if(time() - $cachetime < filemtime($cachefile))
  8. {
  9. readfile($cachefile);
  10. exit;
  11. }
  12. else
  13. {
  14. unlink($cachefile);
  15. }
  16. }
  17. ob_start();
  18. ?>

Bu kodlarımızı sayfamızın başına ekliyoruz. İşin mantığına gelince; öncelikle bulunduğumuz sayfanın url’sini alıp bunu md5 fonksiyonu ile şifreliyoruz. Daha sonra dizinimizde bulunan cache klasöründe şifrelediğimiz dosyanın var olup olmadığına bakıyoruz. Eğer dosyamız var ise ve $cachetime değişkeni ile belirlediğimiz süreden önce oluşturmamış ise sayfaya o dosyayı çağırıyoruz ve exit yaparak diğer kodlarımızı çalıştırmıyoruz. Şayet dosya mevcut değil ya da daha belirlediğimiz zamandan önce oluşturulmuş ise sayfamızın en altına eklediğimiz aşağıdaki kodlar devreye girecek.
  1. <?
  2. $fp = fopen($cachefile, 'w+');
  3. fwrite($fp, ob_get_contents());
  4. fclose($fp);
  5. ob_end_flush();
  6. ?>
Bu kodlarda ise şifrelediğimiz html dosyasını açıp o an sayfamızda ne var ise yazdırma işlemini yapıyoruz. Daha sonra döngü yine yukarda anlattığım gibi devam ediyor.
Sonuç olarak:
  • Cpu kullanımını azalttık
  • Mysql sorgu sayımızı azaltık

Yararlandığım kaynak : Burası

Yorum Yazın

18 + 7 = ? (İşleminin Sonucu)