经过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行文件但未更新的内容。这就是我被困的地方 - 我不知道如何实现以下任务:
我可以使用Ajax更新功能吗?
答案 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?