无需轮询即可检测 PHP 中的文件更改
Posted
技术标签:
【中文标题】无需轮询即可检测 PHP 中的文件更改【英文标题】:Detect file change in PHP without polling 【发布时间】:2012-12-02 02:29:37 【问题描述】:我试图检测特定文件何时被修改,而不是轮询文件内容以查找更改。
服务器运行 Mac OS X,所以inotify
不可用。我的服务器允许使用exec()
。
我怎样才能做到这一点?
【问题讨论】:
作为替代方案,您可以检查filemtime
以获取文件的最后一次修改时间,如果自上次调用以来它发生了变化,您可以假定文件已更改。
您可以在某个时间点对文件进行哈希处理以查看它是否已更改。但是,filemtime
的 CPU 开销要低得多。
php.net 提到 filemtime 的输出会被缓存,如果单个脚本在单个文件上多次使用 filemtime,则应调用 clearstatcache(),但会降低性能。跨度>
每条编程语句都会降低性能。谁在乎?
filemtime 似乎以秒为单位返回最后一次文件修改的时间(无论如何,在 OS X 上),这意味着如果文件在同一秒内被修改两次,则第二次修改被错过,这使得不适合经常修改的文件。
【参考方案1】:
检查filemtime()
。您可以经常轮询它,这比在文件本身中查找更改要容易得多。
【讨论】:
以上是关于无需轮询即可检测 PHP 中的文件更改的主要内容,如果未能解决你的问题,请参考以下文章