V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
frozenway
V2EX  ›  PHP

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

  •  
  •   frozenway · 2020-03-30 16:24:33 +08:00 · 2272 次点击
    这是一个创建于 1697 天前的主题,其中的信息可能已经有所发展或是发生改变。

    代码如下:

    $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
    

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

    5 条回复    2020-03-30 16:48:16 +08:00
    baiyi
        1
    baiyi  
       2020-03-30 16:30:18 +08:00   ❤️ 2
    https://www.php.net/manual/zh/function.filemtime.php

    应该是这个原因:Note: 此函数的结果会被缓存。参见 clearstatcache() 以获得更多细节。
    frozenway
        2
    frozenway  
    OP
       2020-03-30 16:30:37 +08:00
    是不是整个 php 代码执行完后,才会改变文件的上次修改时间?
    frozenway
        3
    frozenway  
    OP
       2020-03-30 16:33:21 +08:00
    @baiyi 试了一下,确实是这个问题
    onion83
        4
    onion83  
       2020-03-30 16:36:34 +08:00   ❤️ 1
    ```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
        5
    frozenway  
    OP
       2020-03-30 16:48:16 +08:00
    @onion83 谢谢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5837 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 02:00 · PVG 10:00 · LAX 18:00 · JFK 21:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.