1

我有一个页面,内容是使用 php 和 Mysql 动态获取的。我使用 foreach 循环来显示所有内容。

foreach($data as $key){
            echo "<div id="post_content"> $key['post'] </div>";
      }

现在我得到了我的提要,但这里的问题是,在你从数据库中看到新的帖子行之前,需要刷新页面。这就是推特出现的地方,当你在推特上并且有来自你关注的人的新帖子时,它会在提要的顶部显示“1条新推文”,当你点击它时,它会将推文的内容添加到饲料。根据我的研究,我找到了几种方法来做到这一点;

  1. 网络套接字。缺点:跨浏览器兼容性。

  2. 使用 AJAX:refresh = setInterval(function(), 5000);缺点:嗯,每 5 秒加载一次脚本:/

  3. 有人向我推荐了 socket.io,我仍在研究如何将它与 php 集成。

我的问题是,有没有其他有效的(最好是简单有效的)方法来做到这一点?任何帮助将不胜感激。

4

2 回答 2

2

问题是任何与套接字相关的东西都对在特定时间点打开的连接数量有限制。因此,如果您不打算为数以万计的并发双工连接提供服务,那么最好将 AJAX 和 JSON 与 PHP 结合使用。我建议您实施轮询间隔。例如,当用户在一定时间后不活动时,增加间隔或假设 5-10 次轮询没有出现任何新内容,增加间隔,也许每次都加倍,直到达到 2 分钟。在获取消息或值时,将间隔减少到 5 秒或更短。

于 2013-01-12T14:25:59.760 回答
1

最简单的方法是提供某种 API,这样您就可以访问某种JSON格式的新“推文”,然后将它们添加到您的 HTML 中。
socket.io 也是一个不错的选择,因为它结合了多种技术,如 websockets、长轮询等,并且在使用旧浏览器时会很好地降级。您可以在 socket.io 上在线找到许多教程。但是 socket.io 依赖于 node.js 服务器端 JS,所以如果你不熟悉它,这可能有点复杂。不过看看这个链接:Using PHP with Socket.io

于 2013-01-12T13:48:52.947 回答