【问题标题】:Detect file change in PHP without polling无需轮询即可检测 PHP 中的文件更改
【发布时间】:2012-12-02 02:29:37
【问题描述】:

我试图检测特定文件何时被修改,而不是轮询文件内容以查找更改。

服务器运行 Mac OS X,所以inotify 不可用。我的服务器允许使用exec()

我怎样才能做到这一点?

【问题讨论】:

  • 作为替代方案,您可以检查filemtime 以获取文件的最后一次修改时间,如果自上次调用以来它发生了变化,您可以假定文件已更改。
  • 您可以在某个时间点对文件进行哈希处理以查看它是否已更改。但是,filemtime 的 CPU 开销要低得多。
  • php.net 提到 filemtime 的输出会被缓存,如果单个脚本在单个文件上多次使用 filemtime,则应调用 clearstatcache(),但会降低性能。跨度>
  • 每条编程语句都会降低性能。谁在乎?
  • filemtime 似乎以秒为单位返回最后一次文件修改的时间(无论如何,在 OS X 上),这意味着如果文件在同一秒内被修改两次,则第二次修改被错过,这使得不适合经常修改的文件。

标签: php filesystems inotify


【解决方案1】:

检查filemtime()。您可以经常轮询它,这比在文件本身中查找更改要容易得多。

【讨论】:

    猜你喜欢
    • 2011-08-09
    • 1970-01-01
    • 2017-08-26
    • 2015-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-09
    相关资源
    最近更新 更多