我用 PHP 和 MySQL 编写了一个聊天客户端。现在的模式如下:
sendMessage.php
将消息插入正确的聊天室
loadMessages.php
已经下载的消息被缓存 因此它只下载自上次下载消息 ID 以来的新消息..
(例如,如果chatMsg1已经下载但还有chatMsg2,则loadMessages.php仅返回chatMsg2)
——————————————
一切正常,但我有点沮丧..我将其用于每秒调用 loadMessages.php 的 iOS 应用程序..
即使没有新消息,php 文件也会执行 2 次查询:
- 查询检查有效 session
- 选择 chatRooms 并检查 chatRoom 的最后一个 messageId 是否永远不等于缓存的消息(在本例中不是)
但是每秒仍有 2 个查询..
有办法防止这种情况发生吗?
例如,如果用户 1 处于事件状态并且用户 2 向他发送消息,则
- 直接向用户 1 发送消息(而不是每秒提取数据)
- 将消息保存在数据库中
..?
是否可以仅使用 PHP 或某种框架来做到这一点? ...或者我被迫使用 Google 的 firebase(?) 之类的东西
最佳答案
对于这些类型的应用程序,您需要能够通过 Websockets 提供内容。换句话说,您需要创建一个 php websocket 服务器,如 http://socketo.me/内容实时传送
关于PHP Mysql实时消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49207885/