我需要检查服务器上目录中存在的文件是否与5分钟前的文件相同?
在特定目录上,我每隔几分钟删除并重新创建一个具有相同名称的文件.脚本是每2分钟访问一次文件.所以在时间t,脚本会检查文件并执行操作.然后在时间t + 1,删除并重新创建文件(相同名称但可能是不同的内容).然后在时间t + 2,脚本再次查找该文件.
所以在第二次检查中,有没有办法检查文件是否已被更改(无需阅读内容)?
Pas*_*TIN 10
确定文件是否已更改的第一个想法是使用该filemtime()函数检查其修改时间.
但我猜这不会很有效,因为你要定期删除并重新创建文件.
所以,在你的情况下,一个非常快(但当然不安全)的第一种方法是检查文件的大小:如果它已经改变,它不是同一个文件.
在PHP中,可以使用该filesize()函数确定文件的大小.
然后,如果大小没有改变,你通常会想要计算文件内容的散列 - 通常是md5或sha1散列.
在PHP中,您将使用以下函数之一,具体取决于您要使用的算法:
在 PHP 中,您可以使用该函数filemtime获取文件的上次修改时间戳。
当心!
该函数的返回值被缓存,并且从同一脚本多次调用它将导致返回相同的值,即使文件同时发生更改!要解决此问题,您需要在clearstatcache调用 之前先调用filemtime。
如果您在每个脚本中调用filemtime 一次(然后脚本终止),这不会影响您,并且您不需要这样做clearstatcache。