繁体   English   中英

PHP Mysql实时消息?

[英]PHP Mysql real time message?

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

sendMessage.php

将消息插入正确的chatRoom

loadMessages.php

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

(例如,如果chatMsg1已经下载,但是有chatMsg2,则loadMessages.php仅返回chatMsg2)

— — — — — — — — —

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

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

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

但仍然每秒有2个查询。

有办法防止这种情况吗?

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

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

..?

是否可以仅使用PHP或某种框架来执行此操作? ...还是我被迫使用Google的firebase(?)之类的东西

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

在sendMessage.php中使用推式通知还将数据保存到db。 每当推送到达时,IOS应用程序都会调用loadMessages.php,因此,如果下一天没有新消息,则不会调用,并且当应用程序收到推送通知时,它将调用loadMessages.php。 另外,您可以在推送中添加发件人名称个人资料图片或消息。 您可以使用Firebase或Apple Push Server。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM