PHP文件修改时间,以毫秒为单位

Ste*_*ato 7 php filemtime

我在那里,我正在编写一个单元测试,断言文件没有被修改.测试代码执行时间不到一秒,因此我想知道是否可以以毫秒为单位检索文件修改时间.filemtime()函数以秒为单位返回UNIX时间戳.

我目前的解决方案是使用sleep(1)函数,这将确保在检查它是否被修改之前经过1秒.我不喜欢这种解决方案,因为它大大减慢了测试速度.

我无法通过get_file_contents()声明内容相等,因为可以重写的数据是相同的.

我猜这不可能,是吗?

Eli*_*ala 6

function getTime($path){
    clearstatcache($path);
    $dateUnix = shell_exec('stat --format "%y" '.$path);
    $date = explode(".", $dateUnix);
    return filemtime($path).".".substr($date[1], 0, 8);
}
Run Code Online (Sandbox Code Playgroud)

的getTime( "MYFILE");


nuq*_*qsa 2

AFAIK UNIX 时间戳的精度是秒,所以这可能是不可能的。

顺便说一句,请注意 PHP 会在内部缓存返回值filemtime(),因此clearstatcache()应该在之前调用。

另一种方法可能是首先修改(或删除)文件的内容,以便您可以轻松识别更改。由于执行每个测试后系统的状态应保持不变,因此在单元测试运行后恢复原始文件内容无论如何都是有意义的。