file_put_contents创建新文件

时间:2015-06-26 22:45:19

标签: php caching file-put-contents

我的下面脚本在缓存文件已存在时有效,但不会自己创建初始的第一个缓存文件。

有人能帮帮我吗? 文件夹权限很好。

<?php 
$cache_file = 'cachemenu/content.cache';

if(file_exists($cache_file)) {
  if(time() - filemtime($cache_file) > 86400) {

    ob_start();
    include 'includes/menu.php';
    $buffer = ob_get_flush();
    file_put_contents($cache_file, $buffer);

  } 

  else include 'cachemenu/content.cache';

}

?>

2 个答案:

答案 0 :(得分:0)

如果文件存在并且它已经存在,那么您只能写入该文件。您应该更改if,以便在它不存在时写入它。

<?php 
$cache_file = 'cachemenu/content.cache';

if(!file_exists($cache_file) || time() - filemtime($cache_file) > 86400) {

    ob_start();
    include 'includes/menu.php';
    $buffer = ob_get_flush();
    file_put_contents($cache_file, $buffer); 
} else {
    include 'cachemenu/content.cache';
}

?>

答案 1 :(得分:0)

您的条件是告诉PHP“如果文件不存在则包含文件”。

这就是为什么脚本从不首先创建缓存文件的原因,因为在每个脚本加载(包括第一个)上你的条件状态“如果没有文件,请包含文件”。

您需要使条件“文件不存在”,例如:

if(!file_exists($cache_file)) {

  // File does not exist - create the file

} else {  

  // File does exist - show the file (include)

}