Twitter将新行添加到数据库时更新

时间:2013-01-12 13:38:03

标签: php javascript mysql ajax websocket

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

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

现在我按原样获取我的Feed,但问题是,在您从数据库中看到新的帖子行之前,需要刷新页面。 这就是twitter的用武之地,当你在推特上时,你所关注的人发布了一条新帖子,它会在Feed的顶部显示“1条新推文”,当你点击它时,它会将推文的内容添加到饲料。 根据我的研究,我发现了几种方法来做到这一点;

  1. 的WebSockets。缺点:跨浏览器兼容性。

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

  3. 有人向我推荐了socket.io,我还在考虑如何将它与php集成。
  4. 我的问题是,是否还有其他有效(优先简单且有效)的方法? 任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

问题是任何套接字相关都会限制在特定时间点打开的连接数量。因此,如果您不打算提供数万个并发双工连接,那么最好将AJAX和JSON与PHP结合使用。 我建议你实现轮询间隔。例如,当用户在一段时间后没有活动时,增加间隔或假设没有任何新的显示5-10个民意调查,增加间隔,可能每次加倍,直到达到,比方说,2分钟。在获取消息或值时,将间隔减少到5秒或更短。

答案 1 :(得分:1)

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