PHP Mysql实时消息?

标签 php mysql

我用 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/

相关文章:

mysql - 使用子查询更新 MySQL 中的表

php - MYSQL 查询中的表连接

mysql - GROUP BY 之前的 LEFT JOIN + ORDER BY

php - 这需要这么长时间才能完成吗?

php - Composer 覆盖包文件

php - 在 PHP 中捕获网关超时的困难

php - 从mysql以表格格式显示

php/mysql 数据库重新设计和迁移 : changing databases to tables

php - PHP 和 Linux 更好地支持 CURL

php - 为什么这个简单的 "INSERT INTO"查询不起作用