zaten genis kapsamli bir sey hazirlaniyorsa bu tip salt sql sorgulari yerine cache mekanizmalari kullanmak daha faydali olacaktir. Ayrica mysql üzerinde string tipte bir arama yapmadigimiz icin 2 3 sorgunun pek sakıncası olmayacagini dusunuyorum.
ornek bir cacheleme sistemi :
<?php
include('conn.php');
function cachele($q,$t=5) /* $t 5 dk cache*/
{
$crc = crc32($q);
$u = mysql_query($q);
while($r = mysql_fetch_assoc($u))
{
$z[] = $r;
}
if(!is_file('cache_'.$crc.'.php')):
touch('cache_'.$crc.'.php');
file_put_contents('cache_'.$crc.'.php',"<?php \n //-- sql : $q \n\r \$data = ".var_export($z,true)." ; \r\n ?>");
return $z;
else:
$x = floor((time() - filemtime('cache_'.$crc.'.php')) / 60);
if($x > $t):
file_put_contents('cache_'.$crc.'.php',"<?php \n //-- sql : $q \n\r \$data = ".var_export($z,true)." ; \r\n ?>");
return $z;
else:
return cagir('cache_'.$crc.'.php');
endif;
endif;
}
function cagir($file)
{
include($file);
echo 'cache\'den aldim abi';
return $data;
}
print_r(cachele("SELECT * FROM video"));
?>Yukarıda "SELECT * FROM video" sorgusunun crc32'li hashi aliniyor.
eger cache_crc32sorgu.php isimli bir dosya yoksa bu dosya olusturularak icine var_export fonksiyonu yardimi ile yapilan sorgunun degerleri array olarak cikti ediliyor.
bu sorguyu tekrarladigimizda eger olusturulan dosya zamani $t degerinden kucukse bu dosya include edilip dosyada yazili olan $data isimli array return ediliyor .
Sonuc olarak mysql'i ayni sorgulada 5 dklık zamanla bypass etmiş oluyoruz. güzel bir filecache denemenizde fayda var.