gpt4 book ai didi

php - cometd 式消息传递 : How to implement server part without polling?

转载 作者:行者123 更新时间:2023-11-30 23:40:32 24 4
gpt4 key购买 nike

我正在计划一个类似聊天的 Web 应用程序,每当一个用户发布内容时,所有其他用户(即使用浏览器指向该站点的人)都会获得即时更新。对此的常见选择是使用长轮询 AJAX 请求的 cometd 式消息传递。使用 jQuery 编写客户端部分不是什么大问题。

但我想知道如何在 PHP 中最好地实现服务器端部分。帖子/消息将存储在 MySQL 中,问题是:在将新帖子写入数据库后,我如何通知所有等待的请求,数据可供他们使用,无需使用轮询?轮询会起作用,但它很丑陋并且浪费资源,因此,这是我不想要的:

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

是否有某种 MySQL 功能可以帮助我解决这个问题?某种 IPC 会有帮助吗?服务器运行 Apache。

最佳答案

您已经提到了一种可能的解决方案,即使用 AJAX 轮询定期查询脚本以获取更新。轮询将在客户端完成,与服务器端无关。

另一种选择是使用 Comet 服务器,例如 Meteor .使用这种方法,您的 PHP 脚本可以将新消息通知 comet 服务器,并且连接的客户端将接收更新。然后由您编写 JavaScript 来向用户显示更新。

关于php - cometd 式消息传递 : How to implement server part without polling?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3515242/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com