我正在计划一个类似聊天的 Web 应用程序,每当一个用户发布内容时,所有其他用户(即浏览器指向该站点的人)都会得到即时更新。对此的常见选择是使用长轮询 AJAX 请求的彗星式消息传递。用 jQuery 编写客户端部分并不是什么大问题。
但我想知道如何最好地在 PHP 中实现服务器端部分。帖子/消息将存储在 MySQL 中,问题是:在将新帖子写入数据库后,我如何通知所有等待的请求,数据可供他们使用而不使用轮询?轮询会起作用,但它很丑陋并且浪费资源,因此,这是我不想要的:
while (timeout not reached) {
if ($database->has_changes())
break;
sleep(1);
}
handle_changes_if_any();
是否有某种 MySQL 功能可以帮助我?某种IPC会有所帮助吗?服务器运行 Apache。