根据php中的文件夹状态进行文件夹监控和事件触发

时间:2011-11-15 11:45:04

标签: php events triggers directory monitor

当事件发生时,有一个文件夹可以在没有特定时间复制xml文件。我想用php方式检查文件夹的状态,当xml文件到达时,会触发一个事件。(ex.call到xml解析器)。那么这是监视文件夹并根据它的状态触发事件的最佳方式(在php中)?感谢名单!

4 个答案:

答案 0 :(得分:2)

没试过,但也许Inotify可以帮到你:

  

inotify是一个Linux内核子系统,用于扩展文件系统以注意对文件系统的更改,并将这些更改报告给应用程序。

有一个用于inotify的PHP扩展,请参阅InotifyDocsinotifyPECL

如果你在linux上运行,另一个选择是使用独立于PHP的守护进程来监视目录的变化。您可以使用dnotify(由inotify废弃),例如:

dnotify -a -r -b -s /path/ -e <command>;

每次修改其他文件夹中的一个文件时,它都会执行命令(-a -r -b -s =任何访问/递归目录查找/在后台/无输出中运行)。

相关:

答案 1 :(得分:0)

你应该看看FAM (File Alteration Monitor)。基于PHP 4的二进制扩展(beta状态); documentation

答案 2 :(得分:0)

我认为最简单的方法是使用cron job每分钟检查一次文件夹。另一个选项是从另一个脚本/程序触发您的php脚本,该脚本/程序将新的xml文件复制到该目录。 Cron使您可以每分钟运行脚本。如果您想要即时响应,您应该编写一个shell脚本(http://aplawrence.com/Unixart/watchdir.html),constanlty在后台运行,或者可能是珍珠守护程序,您可以检测新文件并触发您的php脚本来检查更改。

答案 3 :(得分:-1)

使用cron定期scandir()目录。