使用PHP跟踪文本文件中的更改

时间:2012-06-19 18:21:12

标签: php server-push

我有一个PHP脚本,当服务器上发生特定事件时,必须在客户端(服务器推送)上重新加载页面。所以我必须倾听变化。我的想法是有一个文本文件,其中包含当前页面的页面加载次数。所以我想监视该文件,并在修改后立即使用服务器推送来更新客户端上的内容。问题是如何跟踪文件中的PHP更改?

3 个答案:

答案 0 :(得分:1)

您可以执行以下操作:

<?php
while(true){
    $file = stat('/file');
    if($file['mtime'] == time()){
        //... Do Something Here ..//
    }
    sleep(1);
}

这将持续每秒查找文件修改时间的变化。如果你不限制它,你可以杀死你的磁盘IO,可能需要调整你的ulimit。

答案 1 :(得分:0)

这将检查您的文件是否有变更:

<?php
  $current_contents = "";  

  function checkForChange($filepath) {
    global $current_contents;

    $new_contents = file_get_contents($filepath);
    if (strcmp($new_contents, $current_contents) {
      $current_contents = $new_contents;
      return true;
    }

    return false;
  }

但这不会解决你的问题。在将呈现的html发送到客户端之前,为客户端提供服务的php文件完成执行。该客户端将需要回调一些php文件来检查更改...因为这也是一个http请求,该文件将完成执行并忘记内存中的任何内容。

为了妥善解决这个问题,你可能不得不放弃检查文件的想法。服务器需要知道何时以及如何联系当前连接的客户端,或者那些客户端需要定期轮询轻量级服务。

答案 2 :(得分:0)

这有点像hacky但是如何创建一个吸引页面的cron作业,将其存储在作用域或表中,然后每隔30秒进行一次比较呢?