Php 在后端存储聊天应用程序的聊天信息

Php 在后端存储聊天应用程序的聊天信息,php,xml,database,chat,backend,Php,Xml,Database,Chat,Backend,我正在为android制作一个聊天应用程序,后端有phone gap和PHP。因为这是我第一次开发聊天应用程序,所以我对如何存储聊天信息有点困惑 在数据库中存储消息 A.每条消息一行(但这种大小的数据库将变大,速度变慢) B.所有消息都显示一行,但我认为这不太好 将信息存储在文本文件中并进行附加,但我觉得这会非常缓慢,而且很难维护 将消息存储在XML中,但解析XML和存储复杂性所需的时间将产生问题 所以我最终没有解决方案,请建议我一些解决方案,我是论坛新手,所以请耐心对待我的愚蠢错误,以及像fb

我正在为android制作一个聊天应用程序,后端有phone gap和PHP。因为这是我第一次开发聊天应用程序,所以我对如何存储聊天信息有点困惑

  • 在数据库中存储消息

    A.每条消息一行(但这种大小的数据库将变大,速度变慢)

    B.所有消息都显示一行,但我认为这不太好

  • 将信息存储在文本文件中并进行附加,但我觉得这会非常缓慢,而且很难维护

  • 将消息存储在XML中,但解析XML和存储复杂性所需的时间将产生问题


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

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

    我的首选选项实际上是一个nosql文档数据库(类似于mongo),因为您可能不需要对任何复杂的关系数据建模。然后,我会将每个“聊天”建模为一个文档。每个聊天都会有一系列消息。这样,每当有新消息传入时,您都可以将其推送到消息数组中,以便进行相关的聊天。如果我预期聊天记录会持续很长时间或生成大量数据,我也会考虑对数组中的旧消息进行归档。 在我完成这项工作之后,如果速度仍然是一个问题,我会考虑添加一些内存缓存(memcached或apcu或两者)。所有的信息都将从缓存中发布和检索,因此任何流行的聊天都将保留在内存中,从而大大提高速度


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

    我发现第三种选择会更好。它会比所有其他应用程序都好。试着在客户端设备上以xml本身的形式存储。这样你就可以释放你的数据库

    可能重复的@DonCruickshank这个问题是两年前提出的,所以可能是一些新的,更好更快的解决方案出现了,直到现在你可能熟悉whats应用程序,如果我的应用程序更像它,那么你的建议是什么(它还包括点对点聊天和群聊)是的,我需要旧的聊天,但可能用户不会经常使用它们。我的第一个想法是,使用mongodb时,每个“聊天”对应一个文档(即一个组或一个点对点)。然后,聊天文档将包含一系列已说过的话。收到的每一条新消息都会被推送到该阵列上。你能提供我关于你的解决方案的一些细节的链接吗?如果你能提供,那就太好了