我正在计划一个类似聊天的Web应用程序,每当有一个用户发布内容时,所有其他用户(即浏览器指向该网站的用户)都会获得即时更新。常见的选择是使用长轮询AJAX请求的彗星式消息传递。用jQuery编写客户端部分不是什么大问题。
但我想知道如何在PHP中最好地实现服务器端部分。帖子/消息将存储在MySQL中,问题是:在向数据库写入新帖子后,如何通知所有等待请求,没有使用轮询的数据?轮询会起作用,但它很丑陋,浪费资源,因此,这是我不想要的:
while (timeout not reached) {
if ($database->has_changes())
break;
sleep(1);
}
handle_changes_if_any();
是否有某种MySQL功能可以帮助我?某种IPC有帮助吗?服务器运行Apache。
答案 0 :(得分:0)
您已经提到过一种可能的解决方案,即使用AJAX轮询定期查询脚本以进行更新。轮询将在客户端完成,与服务器端无关。
另一种选择是使用诸如Meteor之类的彗星服务器。使用此方法,您的PHP脚本可以通知彗星服务器新消息,并且连接的客户端将接收更新。然后,您可以编写JavaScript来向用户显示更新。