如何检查PHP是否更改了目录内容?

2022-08-30 16:30:38

我正在用PHP编写一个照片库脚本,并且有一个目录,用户可以在其中存储他们的图片。我正在尝试设置页面缓存,并且仅在目录内容已更改时才刷新缓存。我认为我可以通过使用filemtime()函数缓存目录的上次修改时间并将其与目录的当前修改时间进行比较来做到这一点。但是,正如我所意识到的那样,随着文件在该目录中添加或删除,目录修改时间不会改变(至少在Windows上,还不确定Linux机器)。

所以我的问题是,检查目录内容是否已被修改的最简单方法是什么?


答案 1

正如其他人已经提到的,解决这个问题的更好方法是在特定事件发生时触发一个函数,该函数会更改文件夹。但是,如果您的服务器是 unix,则可以使用 来监视目录,然后调用 PHP 脚本。inotifywait

下面是一个简单的示例:

#!/bin/sh
inotifywait --recursive --monitor --quiet --event modify,create,delete,move --format '%f' /path/to/directory/to/watch |
  while read FILE ; do
    php /path/to/trigger.php $FILE
  done

参见:http://linux.die.net/man/1/inotifywait


答案 2

在用户提交图像后触摸目录怎么样?Changelog说:Windows需要php 5.3才能工作,但我认为它应该在所有其他环境中工作。


推荐