我正在制作一个聊天程序,我需要一个地方来存储消息。客户端将每隔 x 秒与服务器联系一次最后收到的消息 id,服务器将在客户端加入的房间中查找 id 高于该 id 的所有消息。
由于我不会永远存储内容,因此我正在考虑使用仅包含最后 40 条左右消息的平面文件(每个房间一个,以及直接消息)。不过我认为通过比较数字数据库会更快。
我应该使用什么数据存储方法?
平面文件可能会快一点,但从长远来看,它最终会出现更多错误,因为而不是仅仅执行SELECT * FROM messages WHERE room=nnn AND ID > yyy
,您必须加载该文件,解析它,扫描每一行以查找消息 ID,转到正确的消息,然后将其读出。
这只是第一个问题。文本文件不支持多个用户写入(如果两个人同时在同一个房间发帖怎么办?),并且很容易被损坏。
考虑到所有因素,我认为使用数据库更好,即使它是像 SQLite 这样简单的东西,它具有出色的 PHP 支持。然而,考虑到多用户的情况,MySQL 可能是一个更好的选择。此外,MySQL 具有出色的缓存功能,因此大多数时候,最新数据将直接来自 RAM,并且无论以哪种方式,都比在 PHP 中扫描文本文件更快。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)