实时刷新多个房间(PHP和AJAX)


Real time refresh multiple rooms (PHP & AJAX)

我有超过200个房间,人们可以访问我的网站,只是为了通过viewroom观看发布的消息(他们不能说话或写作或其他什么,只是看到).php?id=xx

另一方面,我有人使用移动应用程序向特定房间发送消息(仅发送),该应用程序在我的服务器中调用文件sendmes.php?room=xx,此时我都在工作,但没有实时刷新,我想知道最好的系统,并且可以通过sendmes发送到Viewroom.php服务器负载尽可能轻.php没有沉重的lops和那个

我尝试使用 Ajax 和长时间超时,但这种方式迫使我对 mysql 或文件进行循环,在我看来这是一种高服务器加载方式

我强烈建议更改系统的后端架构。

看看 Node.js 与 Socket.IO。 它是Web套接字的简单包装器(如果没有浏览器支持,还可以使用长轮询AJAX),使整个过程变得容易。 让您的客户端将其所有消息发送到您的 Node 实例,然后让您的 Node 应用程序写入您的数据库以进行存档。

如果您要处理消息,我建议使用已建立的消息传递系统 - 例如RabbitMQ(我们实际上在我们的一个项目中已经非常成功地使用它) - 而不是编写自己的逻辑来存储和排队它们。

这样,您唯一需要编写的就是一个轻量级的"服务器推送"脚本 - 它将在消息传递子系统中查询传入的消息,并将它们路由到特定的房间/用户。