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

用PHP跟踪文本文件中的更改,php,server-push,Php,Server Push,我有一个PHP脚本,当服务器上发生特定事件时,它必须在客户端(服务器推送)上重新加载页面。所以我必须倾听变化。我的想法是创建一个文本文件,其中包含当前页面的页面加载数。因此,我希望监视文件,并在修改后立即使用服务器推送来更新客户端上的内容。问题是如何在PHP中跟踪文件的更改?您可以执行以下操作: <?php while(true){ $file = stat('/file'); if($file['mtime'] == time()){ //... Do S

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

您可以执行以下操作:

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

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

<?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;
  }

这是一种黑客行为,但是创建一个cron作业,将其吸入页面,存储在一个范围或表中,然后每30秒进行一次比较,怎么样呢?

PHP没有这样的机制,只能不断轮询一个文件,查看时间戳/大小是否发生了变化。然而,大多数现代操作系统都有通知系统,你可以使用它们,这将为你带来沉重的负担。但既然你没说你在哪个操作系统上。。。这可能会有所帮助,但页面的重新加载不会导致计数器也发生更改?因此,您将得到一个不断刷新的页面。请确保您包含了最终打破该循环的内容!那会让一台机器很快崩溃。