php - 在后端存储聊天应用程序的聊天消息

标签 php xml database chat backend

我正在为 Android 制作一个聊天应用程序,后端有电话间隙和 PHP。因为这是我第一次构建聊天应用程序,所以我对如何存储聊天消息有点困惑,

  • 在数据库中存储消息

    A. 每条消息一行(但是这种大小的 db 会变大并且速度会变慢)

    B. 一行用于所有消息,但我认为这不好
  • 将消息存储在文本文件中并附加,但我觉得它会非常缓慢且难以维护
  • 以 XML 格式存储消息,但解析 XML 和存储复杂性的时间会产生问题

  • 所以我最终没有解决方案,请给我一些解决方案,我是论坛的新手,所以请耐心对待我的愚蠢错误以及像 fb 这样的大鱼,什么是应用程序存储他们的消息>

    最佳答案

    在这三个选项中,假设您的意思是关系数据库(如 mysql),我会选择您的第一个选项(a 部分)。如果您保留所有内容,db 的大小会变大。然而。你需要保留一切吗?一种选择是定期修剪旧消息。

    我的首选选项实际上是一个 nosql 文档数据库(类似于 mongo),因为您可能不需要对任何复杂的关系数据进行建模。然后我会将每个“聊天”建模为一个文档。每个聊天都会有一系列消息。这样,无论何时收到新消息,您都可以将其推送到相关聊天的消息数组。如果我预计聊天会持续很长时间或生成大量数据,我也会考虑在数组中存档旧消息。

    完成此操作后,如果速度仍然是一个问题,我会考虑添加一些内存缓存(memcached 或 apcu 或两者)。所有消息都将发布并从缓存中检索,因此任何流行的聊天都将保留在内存中,为您提供不错的速度提升。

    您在这条道路上走多远取决于您的需要。

    关于php - 在后端存储聊天应用程序的聊天消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22297146/

    相关文章:

    c# - “元素”是无效的 XmlNodeType

    php - 如何从 foreach(PHP) 中只获得一个结果

    php - 来自 mysql_connect() 的警告未填充 mysql_error()

    html - 在所有浏览器中更改选项卡的宽度

    php - 如何从 Simplepie(多个)提要中删除重复的帖子

    ios - 将表单条目发送到数据库

    php - 如何从数组中随机读取文本字符串,其中文本存储在 MySQL 数据库中

    php - 从下拉列表中删除值

    php - MySQL连接问题

    php - 通过在 url 中传递值来删除数据库