【发布时间】:2012-06-08 11:13:52
【问题描述】:
我想保持我的网站更新,在数据库中添加了一项新信息。我不能使用Node.js 和Comet Programming,而Javascript's setInterval 似乎是个坏主意,因为请求太多。
现在我正在使用这样的东西:
Javascript:
var url = "path_to/file.php";
var req = xmlhttp();
req.open("GET", url, true);
req.send(null);
poll = setInterval(getResponse, 100);
function getResponse()
{
var data = req.responseText;
var res = document.getElementById("response");
res.innerHTML = data;
}
PHP:
<?php
set_time_limit(0);
ob_start();
while(true)
{
#CODE
flush();
ob_flush();
sleep(0.3);
}
flush();
ob_flush();
?>
这是个好主意吗?我可以毫无问题地使用它吗?也许有人知道保持持久连接的更好方法? (在我的网站上将有大约 500 名在线用户)
【问题讨论】:
-
你想做什么,想要的结果是什么?为什么会有这个无限循环?这个
flush(); ob_flush();在你的while(true){..}之后永远不会被执行...... -
@shadyyx 此示例将用于聊天系统,但一旦将新信息添加到数据库中,我还必须在网站上显示新信息。 (我认为每秒发送 Ajax 请求会减慢整个页面的速度)。 [谢谢,我将删除这些行。 ]
-
我从未见过这样的实现,但 AJAX 请求。如果您认为每一秒都非常耗费时间和服务器资源,您仍然可以每 3 秒左右请求一次更改...
标签: php javascript infinite-loop persistent-connection