PHP文件包含错误

时间:2012-06-04 19:36:49

标签: php

我在PHP页面中有以下代码。有时当我删除cache2.html文件时,我希望php重新创建它,下一个人将获得cache2.html而不是执行php代码。我在页面上有时会收到以下警告,但没有内容。是因为多个用户同时访问php?如果是这样,我该如何解决?谢谢。

  

警告:include(dir1 / cache2.html)[function.include]:失败   open stream:没有这样的文件或目录   第8行/home/content/54/site/index.php

<?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
}  
?>

1 个答案:

答案 0 :(得分:3)

对file_exists()的调用本身是高速缓存的,因此即使删除文件后,您的返回值也可能为true。参见:

http://us.php.net/manual/en/function.clearstatcache.php

所以,你可以这样做:

clearstatcache();
if (file_exists($cache)) {
    include($cache);
} else {
    // generate page
}

或者,您可以这样做:

if (file_exists($cache) && @include($cache)) {
    exit;
} else {
    // generate page
}

或者更好的是,如果你要从PHP进程中删除缓存文件,那么在删除文件后只需调用clearstatcache()。