PHP 获取文件修改时间函数 filemtime 的诡异问题?

2020-03-30 16:24:33 +08:00
 frozenway

代码如下:

$time = filemtime('tt.txt');
echo $time."\r\n";
sleep(3);
$str = 1585112434;
file_put_contents('tt.txt', $str);
$time = filemtime('tt.txt');
echo $time;

运行结果:

1585556332
1585556332

为什么会这样? 本函数返回文件中的数据块上次被写入的时间,也就是说,文件的内容上次被修改的时间。 但是实际上为什么

2159 次点击
所在节点    PHP
5 条回复
baiyi
2020-03-30 16:30:18 +08:00
https://www.php.net/manual/zh/function.filemtime.php

应该是这个原因:Note: 此函数的结果会被缓存。参见 clearstatcache() 以获得更多细节。
frozenway
2020-03-30 16:30:37 +08:00
是不是整个 php 代码执行完后,才会改变文件的上次修改时间?
frozenway
2020-03-30 16:33:21 +08:00
@baiyi 试了一下,确实是这个问题
onion83
2020-03-30 16:36:34 +08:00
```php
$time = filemtime('tt.txt');
echo $time."\r\n";
sleep(3);
clearstatcache();
$str = 1585112434;
file_put_contents('tt.txt', $str);
$time = filemtime('tt.txt');
echo $time;
```
frozenway
2020-03-30 16:48:16 +08:00
@onion83 谢谢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/657623

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX