我想监视服务器上的一个目录,以便添加内容(或文件更新),当添加内容时,运行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
。有关更多格式选项和事件名称,请参阅手册。
每次我使用watch时,它似乎都会消耗当前的控制台/tty。这可能不是导入php脚本的最佳工具。
我要采取的一种方法是有一个php脚本做目录列表,存储在数据库像SQLite等,然后比较差异,因为它是一个php脚本,它可以传递信息到其他php脚本或有脚本的其余部分合并。你可以让cron运行你的php脚本