2015-06-26 5 views
0

Мой нижеприведенный скрипт работает, когда файл кэша уже присутствует, но не создает начальный первый файл самого кеша.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'; 

} 

?> 
+0

это репост из http://stackoverflow.com/q/31080321/ почему? –

+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'; 
} 

?> 
+0

Спасибо, что работал Бармаром. Многому научиться @ stackoverflow. –

0

Условное указание PHP «включить файл, если файл не существует».

Именно поэтому сценарий никогда не создает файл кэша в первую очередь, потому что при каждой загрузке скрипта (включая первый) ваши условные состояния «Если нет файла, укажите файл».

Вам нужно сделать условный «файл не существует», как:

if(!file_exists($cache_file)) { 

    // File does not exist - create the file 

} else { 

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

} 
Смежные вопросы