我想保持我的网站更新,在数据库中添加一个新信息。我无法使用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名在线用户)
答案 0 :(得分:2)
推送途径WebSockets是另一种选择,但仅适用于最新版本的浏览器。
你的脚本的缺点是每隔100毫秒(这很短),当最新的ajax响应没有到达时。我会更改脚本,只在前一个ajax到达时才询问服务器是否有更改,以及自上一个ajax到达后的最短时间(超时)。
E.g。 (另):
function getResponse() {
var data = req.responseText;
var res = document.getElementById("response");
res.innerHTML = data;
setTimeout(getResponse, 500);
}
var url = "path_to/file.php";
var req = xmlhttp();
req.open("GET", url, true);
req.send(null);
getResponse();