实时更新页面,包含文件中的文本

时间:2017-01-11 03:26:40

标签: javascript php html ajax

经过5个小时的尝试,我来找你。

我需要创建一个页面,它会在文件更改时自动更新自己并显示文件内容。假设我们有foo.txt,那就是不断更新。我不希望页面每n秒重新加载一次。此外,我只需要显示此文件的最后30行。我想出了这个:

<?php   //live.php
$handle = popen("tail -30l foo.txt 2>&1", 'r');
while(!feof($handle)) {
    $buffer = fgets($handle);
    echo "$buffer<br/>\n";
    ob_flush();
    flush();
}
pclose($handle);
?>

成功显示最后30行文件但未更新的内容。这就是我被困的地方 - 我不知道如何实现以下任务:

  1. 检查文件更新,
  2. 文件更改时显示live.php。
  3. 我可以使用Ajax更新功能吗?

1 个答案:

答案 0 :(得分:0)

有两种方法可以做到。

1)合并 这将主要由前端完成。您需要在每秒从前端检查后检查数据是否有任何变化。如果检测到更改,则从服务器发送新数据并用新数据替换当前数据。如果没有发现任何变化,则无需更换。

<强>优点:

i) Page will only refresh if there is any change on server.
ii) Client is responsible for detection manily.

2)推 这主要可以通过服务器来实现。每当PHP端的文件检测发生任何变化时(通过CRON JOB)。通过套接字将数据发送到前端。

<强>优点:

 i) Only data will send if there is change in data. No extra network calls.

本文将有所帮助。

In what situations would AJAX long/short polling be preferred over HTML5 WebSockets?