【发布时间】:2012-06-04 19:36:49
【问题描述】:
我在 PHP 页面中有以下代码。有时当我删除 cache2.html 文件时,我希望 php 重新创建它,并且下一个人将获得 cache2.html 而不是执行 php 代码。我有时在页面上收到以下警告,但没有内容。是因为多个用户同时访问php吗?如果是这样,我该如何解决?谢谢。
警告:include(dir1/cache2.html) [function.include]:未能 打开流:中没有这样的文件或目录 /home/content/54/site/index.php 在第 8 行
<?php
if (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')) ob_start("ob_gzhandler"); else ob_start();
$cachefile = "dir1/cache2.html";
if (file_exists($cachefile)) {
include($cachefile); // output the contents of the cache file
} else {
/* HTML (BUILT USING PHP/MYSQL) */
$cachefile = "dir1/cache2.html";
$fp = fopen($cachefile, 'w');
fwrite($fp, ob_get_contents());
fclose($fp);
ob_flush(); // Send the output to the browser
}
?>
【问题讨论】:
-
修复它的一种方法是在有人访问页面时不删除文件。这听起来不像是一个巨魔答案,但尝试做听起来像你想做的事情需要更多的复杂性,并且知道你是否需要它很重要。
-
那是我为避免每个请求调用数据库而构建的缓存。我清楚每次我的网站内容发生变化(每隔一小时左右发生一次)。我还需要哪些其他选项来实现此缓存?
-
您的缓存解决方案还不错,只是错误处理有待改进。我喜欢 AlexHowansky 下面的第二个建议。
标签: php