filemtime在修改文件之前和之后返回相同的值

时间:2015-11-28 15:27:17

标签: php timestamp fopen fwrite filemtime

我试图在使用fwrite写入文件之前和之后获取文件的最后修改时间。但是,由于某种原因,我得到了相同的值。

<?php
$i = filemtime('log.txt');
echo gmdate("h:i:s", $i);
echo "<br/>";
$e=fopen('log.txt', 'w');
fwrite($e, "well well well");
$j = filemtime('log.txt');
echo gmdate("h:i:s", $j);

?>

现在我修改&#39; log.txt&#39;在运行此脚本之前大约一分钟使用文本编辑器。所以我应该得到大约40-60秒的时差。如果有人可以指出这里发生的事情,那真的很感激。感谢。

2 个答案:

答案 0 :(得分:5)

filemtime的文档声明了此函数的结果被缓存。也许您可以使用clearstatcache尝试:

<?php
$i = filemtime('log.txt');
echo gmdate("h:i:s", $i);
echo "<br/>";
$e=fopen('log.txt', 'w');
fwrite($e, "well well well");
clearstatcache();
$j = filemtime('log.txt');
echo gmdate("h:i:s", $j);

答案 1 :(得分:0)

尝试在fwrite之后添加fclose:

<?php
$i = filemtime('log.txt');
echo gmdate("h:i:s", $i);
echo "<br/>";
$e=fopen('log.txt', 'w');
fwrite($e, "well well well");
fclose($e);
$j = filemtime('log.txt');
echo gmdate("h:i:s", $j);
?>