如何检查文件是否与以前相同

pta*_*mzz 3 php

我需要检查服务器上目录中存在的文件是否与5分钟前的文件相同?

在特定目录上,我每隔几分钟删除并重新创建一个具有相同名称的文件.脚本是每2分钟访问一次文件.所以在时间t,脚本会检查文件并执行操作.然后在时间t + 1,删除并重新创建文件(相同名称但可能是不同的内容).然后在时间t + 2,脚本再次查找该文件.

所以在第二次检查中,有没有办法检查文件是否已被更改(无需阅读内容)?

Pas*_*TIN 10

确定文件是否已更改的第一个想法是使用该filemtime()函数检查其修改时间.

但我猜这不会很有效,因为你要定期删除并重新创建文件.


所以,在你的情况下,一个非常快(但当然不安全)的第一种方法是检查文件的大小:如果它已经改变,它不是同一个文件.
在PHP中,可以使用该filesize()函数确定文件的大小.


然后,如果大小没有改变,你通常会想要计算文件内容的散列 - 通常是md5sha1散列.

在PHP中,您将使用以下函数之一,具体取决于您要使用的算法:


Jon*_*Jon 5

在 PHP 中,您可以使用该函数filemtime获取文件的上次修改时间戳。

当心!

该函数的返回值被缓存,并且从同一脚本多次调用它将导致返回相同的值,即使文件同时发生更改!要解决此问题,您需要在clearstatcache调用 之前先调用filemtime

如果您在每个脚本中调用filemtime 一次(然后脚本终止),这不会影响您,并且您不需要这样做clearstatcache