谈下PHP缓存时间技术(3)

Cache类: 错误提示
function warn($errorstring){
echo “<b><font color=’red’>发生错误:<pre>”.$errorstring.”</pre></font></b>”;
}

这个方法主要输出错误信息。

Cache类: 获得URL地址
function get_url() {
if (!isset($_SERVER['REQUEST_URI'])) {
$url = $_SERVER['REQUEST_URI'];
}else{
$url = $_SERVER['SCRIPT_NAME'];
$url .= (!empty($_SERVER['QUERY_STRING'])) ? ‘?’ . $_SERVER['QUERY_STRING'] : ”;
}

return $url;
}

这个方法返回当前url的信息,国外很多cms系统这样做,主要是缓存x.php?page=1,x.php?page=2等这种文件的,这里列出是为了扩展的这个cache类功能的。

Cache类: 写缓存
function cache_page($pageurl,$pagedata){
if(!$fso=fopen($pageurl,’w')){
$this->warns(’无法打开缓存文件.’);//trigger_error
return false;
}
if(!flock($fso,LOCK_EX)){//LOCK_NB,排它型锁定
$this->warns(’无法锁定缓存文件.’);//trigger_error
return false;
}
if(!fwrite($fso,$pagedata)){//写入字节流,serialize写入其他格式
$this->warns(’无法写入缓存文件.’);//trigger_error
return false;
}
flock($fso,LOCK_UN);//释放锁定
fclose($fso);
return true;
}

cache_page方法分别传入的是缓存的文件名称和数据,这是把数据写到文件里的方法,先用fopen打开文件,然后调用句柄锁定这个文件,然后用fwrite写入文件,最后释放这个句柄,任何一步发生错误将抛出错误。

您可能看到这个注释:写入字节流,serialize写入其他格式。顺便一提的是如果我们要把一个数组,(可以从MySQL数据库里面select查询除了的结果)用serialize函数写入,用unserialize读取到原来的类型。

相关文章: 

If you enjoyed this post, please consider to leave a comment or subscribe to the feed and get future articles delivered to your feed reader.

Comments

还没有评论。

发表评论

(必填)

(必填)