我想监视服务器上的目录以进行添加(或文件更新),并在添加内容时运行php脚本。
我看到有watch
,但我不确定如何使用它。
我知道watch -d ls -l
会跟踪文件列表中的更改,但是如何将更改的文件传输到php脚本?另外,如何查看不是新文件但已更新的文件?
我可以将其与配置文件(哪些目录等)一起运行,以便于最终用户进行设置?
答案 0 :(得分:2)
您可以在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,但这需要一个系统守护进程。
答案 1 :(得分:0)
每次我使用手表时,它似乎消耗了当前的控制台/ tty。可能不是管道进入php脚本的最佳工具。
我要采取的一种方法是让php脚本执行目录列表,存储在像SQLite这样的数据库中,然后比较差异,因为它是一个php脚本,它可以将信息传递给其他php脚本或包含脚本的其余部分。你可以让cron运行你的php脚本。