在我的缓存系统中,我想要它,如果请求新页面,检查文件是否存在,如果不存在,则复制存储在服务器上,如果存在,则它不能被覆盖。
我遇到的问题是我可能正在使用设计缓慢的功能。
这是我目前保存文件的实现的一部分:
if (!file_exists($filename)){$h=fopen($filename,"wb");if ($h){fwrite($h,$c);fclose($h);}}
这是我加载文件的实现的一部分:
if (($m=@filemtime($file)) !== false){
if ($m >= filemtime("sitemodification.file")){
$outp=file_get_contents($file);
header("Content-length:".strlen($outp),true);echo $outp;flush();exit();
}
}
我想要做的是用一组更好的功能代替它,但仍然可以实现相同的功能。包括sitemodification.file在内的所有缓存文件都驻留在ramdisk上。我在退出之前添加了一个flush,希望内容输出更快。
我目前无法使用直接内存寻址,因为要存储的文件大小都不同。
是否有一组我可以使用的函数可以执行我提供的代码至少几毫秒,尤其是加载文件代码?
我正在努力将时间保持在第一个字节低位。
答案 0 :(得分:0)
首先,首选is_file至file_exists
并使用file_put_contents
:
if ( !is_file($filename) ) {
file_put_contents($filename,$c);
}
然后,使用适当的功能进行此类工作,readfile:
if ( ($m = @filemtime($file)) !== false && $m >= filemtime('sitemodification.file')) {
header('Content-length:'.filesize($file));
readfile($file);
}
}
您应该看到一些改进,但请记住,文件访问速度很慢,在发送任何内容之前,您需要检查三次文件访问权限。