Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
监视目录,然后运行PHP脚本_Php_Linux_Unix_Watch - Fatal编程技术网

监视目录,然后运行PHP脚本

监视目录,然后运行PHP脚本,php,linux,unix,watch,Php,Linux,Unix,Watch,我想监视服务器上的目录以进行添加(或文件更新),并且在添加内容时,运行php脚本 我看到有手表,但我不确定该如何使用它 我知道watch-dls-l将跟踪文件列表中的更改,但是如何将更改后的文件传输到php脚本?另外,我如何监视一个不是新的但已更新的文件 我可以将其与配置文件(什么目录等)一起运行以方便最终用户安装吗?每次我使用watch时,它似乎都会占用当前的控制台/tty。可能不是将管道传输到php脚本的最佳工具 我会采取的一种方法是让一个php脚本做目录列表,存储在类似SQLite的DB中

我想监视服务器上的目录以进行添加(或文件更新),并且在添加内容时,运行php脚本

我看到有
手表
,但我不确定该如何使用它

我知道
watch-dls-l
将跟踪文件列表中的更改,但是如何将更改后的文件传输到php脚本?另外,我如何监视一个不是新的但已更新的文件


我可以将其与配置文件(什么目录等)一起运行以方便最终用户安装吗?

每次我使用watch时,它似乎都会占用当前的控制台/tty。可能不是将管道传输到php脚本的最佳工具

我会采取的一种方法是让一个php脚本做目录列表,存储在类似SQLite的DB中,等等。然后比较差异,因为它是一个php脚本,它可以将信息传递给其他php脚本,或者合并脚本的其余部分。您可以让cron运行php脚本。

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

while read file; do
    php some_script.php "$file"
done < inotifywait -e create,delete,move,modify -m . --format "%w%f" $dir
读取文件时
;做
php some_script.php“$file”
完成
%w%f
将为您提供文件路径。如果您还需要该事件,请添加
%e
。有关更多格式选项和事件名称,请参阅手册页

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

相关: