HI.
Поскольку я использую пакет общего хостинга, и я не могу использовать PECL Memcache, я был бы признателен за несколько советов относительно моих собственных сомнений между использованием моей собственной маленькой системы кэширования или системой PEAR Cache_Lite.
Итак, вот мои функции:
<?php
//this one create a simple .txt file named by unique query_key string generated width e.g $file_name=md5("SELECT * FROM table"); content of that file is serialized value of mysql return
function write($query_key,$result)
{
global $config;
$new_file_name=md5($query_key);
$result_to_write=serialize($result);
if($handle=opendir($config['cache_dir']))
{
$f=fopen($config['cache_dir'].$new_file_name.'.txt','w+');
fwrite($f,$result_to_write);
fclose($f);
closedir($handle);
}
}
// this one reads content of file (serialized mysql return of unique query_key) if timeout hes not expired, and if it is it return false
function read($query_key,$timeout)
{
global $config;
$file_name=md5($query_key);
if($handle=opendir($config['cache_dir']))
{
if(file_exists($config['cache_dir'].$file_name.'.txt'))
{
$last_accessed=filemtime($config['cache_dir'].$file_name.'.txt');
$now=time();
if(($now-$last_accessed)<$timeout)
{
$file=fopen($config['cache_dir'].$file_name.'.txt','rb');
$f=fread($file,filesize($config['cache_dir'].$file_name.'.txt'));
$array=unserialize($f);
fclose($file);
closedir($handle);
}else{ return FALSE; }
}else{ return FALSE; }
}
if(!empty($array)) return $array;
else return FALSE;
}
//and finally this one which is used when executing query, so it has timeout in seconds, if file (cached result) exists, and timeout has not expired, it returnt cached data , or it reads from database returns new result,and cache new result by writing new file
function cache($query)
{
$timeout=600;
$file_exists=read($query,$timeout);
if($file_exists)
{
return $file_exists;
}else{
$result=get_rows($query);
write($query,$result);
return $result;
}
}
?>
Эта моя маленькая "система кэширования" работает очень хорошо, и, как я вижу, PEAR Cache_Lite работает почти так же, как и яне знакомы с системой кэширования груш, я хотел бы знать, что является лучшим, более безопасным и быстрым решением для использования между этими двумя и почему ??
Спасибо большое !!