PHP Mysql实时消息?

时间:2018-03-10 10:16:05

标签: php mysql

我用PHP和MySQL编写了一个聊天客户端。现在的模式如下:

sendMessage.php

将消息插入正确的chatRoom

loadMessages.php

已缓存已下载的邮件 因此,它仅下载自上次下载的消息ID以来的新消息..

(例如,如果已经下载了chatMsg1但是有chatMsg2,那么loadMessages.php只返回chatMsg2)

- - - - - - - -

一切正常,但我有点沮丧..我正在将它用于每秒调用loadMessages.php的iOS应用程序..

即使没有新消息,php文件也会进行2次查询:

  • 查询有效会话
  • 选择chatRooms并检查chatRoom的上一个messageId是否永远不是缓存的(在这种情况下为no)

但是,每秒仍有2个查询..

有没有办法防止这种情况?

例如,如果用户1处于活动状态,而用户2向他发送消息,则

  • 直接向用户1发送消息(而不是每秒提取数据)
  • 在数据库中保存邮件

...

是否可以仅使用PHP或使用某种框架来执行此操作? ...或者我被迫使用谷歌的火力棒(?)和类似的东西

2 个答案:

答案 0 :(得分:1)

对于这类应用程序,您需要能够通过websockets提供内容。换句话说,您需要创建一个像http://socketo.me/这样的php websocket服务器,其中的内容是实时传送的

答案 1 :(得分:0)

在sendMessage.php中使用推送通知也将数据保存到db。 IOS应用程序在推送到达时调用loadMessages.php,因此如果下一天没有新消息将没有调用,并且当应用程序获得推送通知时,它将调用loadMessages.php。 另外,您可以在推送中包含发件人姓名档案图片或消息。 你可以使用firebase或apple push服务器。