V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
frozenway
V2EX  ›  PHP

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

  •  
  •   frozenway · Mar 30, 2020 · 2747 views
    This topic created in 2231 days ago, the information mentioned may be changed or developed.

    代码如下:

    $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 replies    2020-03-30 16:48:16 +08:00
    FinnBai
        1
    FinnBai  
       Mar 30, 2020   ❤️ 2
    https://www.php.net/manual/zh/function.filemtime.php

    应该是这个原因:Note: 此函数的结果会被缓存。参见 clearstatcache() 以获得更多细节。
    frozenway
        2
    frozenway  
    OP
       Mar 30, 2020
    是不是整个 php 代码执行完后,才会改变文件的上次修改时间?
    frozenway
        3
    frozenway  
    OP
       Mar 30, 2020
    @baiyi 试了一下,确实是这个问题
    onion83
        4
    onion83  
       Mar 30, 2020   ❤️ 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
       Mar 30, 2020
    @onion83 谢谢
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3093 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 03:36 · PVG 11:36 · LAX 20:36 · JFK 23:36
    ♥ Do have faith in what you're doing.