gpt4 book ai didi

php - 使用 PHP 和 jQuery 进行实时聊天。在哪里存储信息? mysql还是文件?

转载 作者:IT老高 更新时间:2023-10-29 00:19:34 26 4
gpt4 key购买 nike

有 1 对 1 实时聊天。两种解决方案:

1) 我将每条消息都存储到数据库中,并且在 jQuery 的帮助下,我每秒检查数据库中是否有新消息。当然我也使用缓存。如果有,我们会给出该消息。

2) 我将每条消息存储在一个 html 文件中,并且每秒通过 jQuery 一遍又一遍地显示该文件。

什么更好?还是有第三种选择?总的来说,对于这种项目,mysql 或 file 哪个更好?

非常感谢。

附注最重要的问题是:什么方式更高效,什么方式吃的资源更少!

编辑:现在,对于许多聊天(比如说 2,500 个聊天,这意味着 5,000 个用户)使用长轮询并检查何时通过 javascript 每秒编辑文件是不是很糟糕?我使用非常相似的方法,比如这个聊天:http://css-tricks.com/jquery-php-chat/它会杀死我的主机吗?

最佳答案

每个人都给出了广泛的意见,但我认为没有人真正一针见血。

当涉及到存储数据时,数据量、访问速率以及其他几个因素都决定了最佳存储平台。

有些人建议使用 memcached。现在,尽管这是一个有效的答案(您可以使用它),但我认为这不是一个好主意,仅基于 memcached 将数据存储在您的服务器内存中这一事实。

您的内存不是用于存储数据,而是用于实际应用程序、操作系统、共享库等。

在内存中存储数据可能会导致当前运行的其他应用程序出现很多问题。如果您在 RAM 中存储太多数据,您的应用程序将无法完成分配给它们的操作。

虽然这比 MySQL 等基于磁盘的存储平台要快,但它并不可靠。

我个人会使用 MySQL 作为您的服务器端存储引擎。这将减少您遇到的问题数量,并使数据非常易于管理。

为了加快对客户的响应速度,我会考虑运行 node在您的服务器上。

这是因为它是事件驱动且非阻塞的。

这是什么意思?

好吧,当客户端 A 请求一些存储在硬盘驱动器上的数据时,传统上 PHP 可能会对 C++ 说,为我获取存储在硬盘驱动器这个扇区上的这 block 数据。 C++ 会说“好的,没问题”,当它继续获取信息时,PHP 会坐下来等待数据被读取并返回,然后再继续它的操作,阻塞所有其他客户端在同时。

使用节点,它略有不同。 Node 会对内核说,“获取我这 block 信息,完成后,给我打电话”,然后它会继续接受来自其他可能不需要磁盘访问的客户端的请求。

这么突然,因为我们给内核分配了一个回调,我们不必等待:),快乐的日子。

看看这张图片: Node Event Loop

这确实可能是您正在寻找的答案,请参阅以下内容以获取有关节点如何成为您正确选择的更多描述性和详细信息:

关于php - 使用 PHP 和 jQuery 进行实时聊天。在哪里存储信息? mysql还是文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5655774/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com