Monitor目录,然后运行PHP脚本


Monitor directory and then run PHP script

我想监视服务器上的一个目录,以便添加内容(或文件更新),当添加内容时,运行php脚本。

我看到有watch,但我不确定确切如何使用它。

我知道watch -d ls -l将跟踪文件清单中的更改,但是我如何将更改后的文件管道到php脚本呢?此外,我如何监视不是新的但已更新的文件?

我可以在配置文件(什么目录等)旁边运行这个,以便最终用户轻松设置吗?

您可以在bash脚本中使用inotifywait(来自inotify-tools)

while read file; do
    php some_script.php "$file"
done < inotifywait -e create,delete,move,modify -m . --format "%w%f" $dir

%w%f将为您提供文件路径。如果您还需要事件,请添加%e。有关更多格式选项和事件名称,请参阅手册。

另一种可能是incron,但这需要一个系统守护进程。

每次我使用watch时,它似乎都会消耗当前的控制台/tty。这可能不是导入php脚本的最佳工具。

我要采取的一种方法是有一个php脚本做目录列表,存储在数据库像SQLite等,然后比较差异,因为它是一个php脚本,它可以传递信息到其他php脚本或有脚本的其余部分合并。你可以让cron运行你的php脚本