Search code examples
phpfilemtime

filemtime() constant during execution despite changes to file


Try running

<?php
  echo filemtime("test.txt")."\n";
  sleep(4);
  file_put_contents("test.txt", "test");
  echo filemtime("test.txt")."\n";
?>

For me the command line printed:

1343490984
1343490984

That can't be right, can it?


Solution

  • From the filemtime documentation:

    Note: The results of this function are cached. See clearstatcache() for more details.

    You need to call clearstatcache() before you call filemtime() again:

    echo filemtime("test.txt")."\n";
    sleep(4);
    file_put_contents("test.txt", "test");
    clearstatcache();
    echo filemtime("test.txt")."\n";