我正在计划一个类似聊天的Web应用程序,每当一个用户发布某些内容时,所有其他用户(即带有浏览器指向该网站的人)都会获得即时更新。这样做的共同选择是使用长播放AJAX请求的彗星风格的消息传递。用jQuery编写客户端部分并不是什么大问题。

但是我想知道如何最好地在PHP中实现服务器端部分。帖子/消息将存储在MySQL中,问题是:在编写了数据库的新帖子后,我如何通知所有等待请求,数据可用于他们 没有 使用民意调查?投票将有效,但这很丑陋,浪费了资源,因此,这就是我不想要的:

while (timeout not reached) {
    if ($database->has_changes())
        break;
    sleep(1);
}
handle_changes_if_any();

是否有某种MySQL功能可以帮助我在这里?某种IPC会有所帮助吗?服务器运行Apache。

有帮助吗?

解决方案

您已经提到了一种可能的解决方案,即使用Ajax轮询来定期查询脚本以进行更新。投票将在客户端进行,并且与服务器端无关。

另一个选项是使用彗星服务器,例如 流星. 。通过这种方法,您的PHP脚本可以将新消息通知彗星服务器,并且连接的客户端将收到更新。然后,您只能编写JavaScript将更新显示给用户。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top