php - 如何制作一个不断更新的页面?

标签 php javascript ajax comet

我正在尝试在我的网站上创建一个页面,以实时显示新上传的项目。

我认为每 3 秒调用一次 Ajax 脚本 是解决此问题的最佳方法,但是我的网站并没有那么频繁地获得新的上传项目。它也变化无常,从 30 秒到 1 小时不等!

此外,每 3 秒调用一次脚本会对我的服务器造成很大的负担,尤其是当很多人在同一页面上时。

我正在四处寻找类似于 PHP 的推送通知之类的东西。虽然这看起来很牵强,但我正在寻找当有人向网站上传内容时,上传脚本会告诉提要页面更新的东西。

我看到了一个叫做 COMET 的东西——尽管阅读文章/教程让我更加困惑。

那么,实现不断更新页面的最佳方式是什么?

最佳答案

在服务器端,您需要一个脚本来根据时间戳(例如:上次请求)判断是否有新内容(例如:新文件)。在客户端,您有两种选择:

Polling aka Periodic Refresh :

这基本上意味着让您的客户端定期轮询服务器以检查是否有新数据。您想要的是让您的请求和响应尽可能简洁。如果在单独的进程中运行处理这些请求的脚本,也会有所帮助。

您可以将间隔调整为服务器和用户都可以接受的时间间隔。您还可以使用 Heartbeat判断用户是否仍处于事件状态,这样您就可以在用户离开窗口但离开计算机时停止轮询服务器。

HTTP Streaming aka "Comet" :

使用它需要更多的设置;但这基本上是从客户端到服务器的长期连接,并且服务器可以在必要时将内容“推送”到客户端。

关于php - 如何制作一个不断更新的页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3713457/

相关文章:

PHP-MYSQL 评分评论

javascript - 使用bunyan记录器登录nodejs,将DEBUG、INFO、ERROR打印到同一文件

javascript - Node JS : Convert retrieved data from DB as JSON to Plain text

javascript - 为什么使用 Facebook 的 Graph API(通过 AJAX POST)上传的图片会获得 "Only Me"权限?

javascript - 通过回调返回ajax?

javascript - 如何在 ASP.NET 中异步调用 Web 方法(后面的 SharePoint)

php - 我如何从 php 调用 C 程序中的函数?

javascript - html/javascript/php : how do i use a "global variable"?

php - 使用单独的列将 php 导出到 excel

javascript - 可能的竞争条件调用 setState