我正在尝试了解轮询的工作时间。我已经阅读了很多教程,发现其中大多数都使用 jQuery。对我来说,使用 jQuery 很好,因为它让事情变得更容易。不过说说学习javascript的基础吧。使用 jQuery 并不是我考虑的第一选择。
我已经进行了自己的 lomg 投票,对此有一些疑问。
在 javascript 中(我不会有整个脚本,因为我猜人们理解它非常基本)
function callme() {
var tmstmp= new Date().getTime(); // sending time stamp now to php
var url="test2.php?user_id=298&tmstmp="+tmstmp;
var params="user_id=298&tmstmp="+tmstmp;
xmlHttp=GetXmlHttpObject()
xmlHttp.onreadystatechange=function () {
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete"){
if (xmlHttp.responseText!=""){
document.getElementById("result").innerHTML=xmlHttp.responseText;
}
setTimeout("callme()",1000);
}
}
在 PHP 中
$user_id=$_POST['user_id'];
$tmstmp=$_POST['tmstmp'];
$params=$_POST['params'];
$stmt = $conn->prepare('SELECT * FROM user where recipient=:recipient ORDER BY cr_id desc');
$stmt->bindParam(':recipient', $user_id);
$r=$stmt->fetch();
$currentmodif=$r['database_timestamp'];
if ($currentmodif <= $tmstmp) { ///**HERE IS THE QUESTION !!
sleep(1);
clearstatcache();
$currentmodif =$r['database_timestamp'];
}
echo $r['message'].'-->'.$tmstmp;
我的问题是:
实际上在php中
- if ($currentmodif <= $tmstmp) 必须是While ($currentmodif <= $tmstmp)
根据我找到的教程。但是,如果我使用while 直到我将其更改为 ( > ) 为什么?
- 如果我继续使用if这样而不是使用While这样做是错误的吗?
你对我制作的这个脚本有什么建议吗?
过了一会儿(让我们说几分钟)我收到消息服务不可用 bla bla bla
我真的很想知道其他人如何毫无问题地进行长轮询,例如 Facebook 或其他聊天彗星。
Thank you for any answer.