【发布时间】:2012-12-26 23:03:42
【问题描述】:
我有一个页面,内容是用php和Mysql动态获取的。我使用foreach循环来显示所有内容。
foreach($data as $key){
echo "<div id="post_content"> $key['post'] </div>";
}
现在我得到了我的提要,但这里的问题是,需要刷新页面才能从数据库中看到新的帖子行。 这就是推特的用武之地,当你在推特上并且有一个你正在关注的人的新帖子时,它会在提要的顶部显示“1条新推文”,当你点击它时,它会将推文的内容添加到饲料。 根据我的研究,我找到了几种方法来做到这一点;
网络套接字。缺点:跨浏览器兼容性。
使用 AJAX:
refresh = setInterval(function(), 5000);缺点:嗯,每 5 秒加载一次脚本:/- 有人向我推荐了 socket.io,我还在研究如何将它与 php 集成。
我的问题是,有没有其他有效的(最好是简单有效的)方法来做到这一点? 任何帮助将不胜感激。
【问题讨论】:
-
您不想为您可能拥有的每个连接都设置一个套接字。我会做AJAX。您可以通过让脚本在用户不活动一定量后不对服务器进行更新调用来改进您的脚本。这将使您的服务器免受非活动用户的攻击。
-
但是页面基本上是我的主页,即使对于活跃用户来说,它不会仍然效率低下吗?
-
如果您使用套接字,您将极大地限制您的站点可以同时拥有的用户数量。可以打开多少个套接字有一个硬性上限,您的服务器必须投入资源来保持这些套接字打开。
-
哦,我明白了,你觉得 node.js 和 socket.io 怎么样?它会属于同一只猫吗?
-
我从未使用过node.js。最重要的是,如果您走任何使用套接字的路线,您将受到限制。也许您可以对同时访问您网站的用户数量进行硬性限制。如果是这种情况,请选择使用套接字的解决方案。另请查看此线程:stackoverflow.com/questions/1575453/…
标签: php javascript mysql ajax websocket