我在考虑如何制作即时消息应用程序,并且不想经常发送一个AJAX请求(每隔0.2秒一次),我遇到了以下想法:
我知道如何做第一步和第三步,但第二步是我的头脑。
我假设在第2步,我需要在某处存储请求,而PHP脚本不断循环并寻找一些更改,一旦有更改,保存的请求将是回复了。
答案 0 :(得分:1)
您可以每隔2秒使用递归并查询数据库,直到找到要向用户提供的新数据。所以基本上你可以做类似
的事情public function isDataUpdated($lastId) {
$query = "SELECT * FROM `messages` WHERE `messages`.`message_id` > $lastId";
return (bool)(count($this->executeSQL($query)) > 0);
}
public function fetchNewMessages () {
if ($this->isDataUpdated($_GET['last_id'])) {
/* We have new data! Send it to the user */
} else {
sleep(2); // wait for 2 seconds
$this->fetchNewMessages(); // we use recursion to query the database every 2 seconds to find new data
}
}
虽然它不是最好的解决方案,但它有望起作用。我建议您查看Sockets in PHP以更好地实现您的目标