gpt4 book ai didi

php - 在 session cookie 中存储大量数据意味着什么?

转载 作者:可可西里 更新时间:2023-11-01 13:23:18 27 4
gpt4 key购买 nike

谁能解释一下在 session 中存储大量数据的缺点或给我一些阅读 Material ?

如果在 session 中存储数据和从数据文件中读取数据之间有什么区别,我也会感兴趣吗?

最佳答案

如果您在一个 session 中存储大量数据,您的输入/输出性能将会下降,因为将会有大量的读/写。

默认情况下,PHP 中的 session 存储在/tmp 目录中的平面文件中。因此,您的 session 数据被写入某种数据文件中。

PHP 允许您通过 session_set_save_handler() 函数覆盖其默认 session 处理程序,您可以在其中重新定义读取/写入/维护 session 的方式。

您也可以通过 php.ini 文件覆盖它,您可以在其中通过 session.save_handler 指令指定它。

现在,大量 session 存储大数据意味着将创建大量文件,并且由于硬盘驱动器的运行方式(当然是机械驱动器,它们是仍然是普通的)。您拥有的越多,找到它所需的时间就越长。它们越大,阅读它所需的时间就越长。如果您有很多它们并且它们很大 - 麻烦加倍,则需要改变方法。

那么解决方案是什么?

通常,当遇到性能下降时,人们会对其网站进行负载平衡。不幸的是,这不适用于 session ,因为负载平衡正在选择使用哪台计算机来满足当前请求。这意味着不同的计算机将为您在某些网站上浏览的页面提供服务。这意味着,如果这些计算机使用默认的 session 存储机制(/tmp 目录), session 将不会跨服务器保留,因为它们无法访问彼此的/tmp 目录。您可以通过安装 NAS 并使其对集群中的所有计算机全局可见来解决此问题,但这既昂贵又难以维护。

另一种选择是将 session 存储在数据库中。可以从我们虚构的集群中的任何计算机访问数据库。通常,有专门的数据库用于处理 session ,专门用于与存储您的网站内容或其他内容的数据库分开。在 NoSQL 流行的时候——在我看来,NoSQL 非常适合处理 session 。它们易于扩展,将数据写入存储设备的速度比 RDBMS 更快。

第三个选项是提升所有这些,放弃硬盘作为永久存储解决方案,只使用服务器的内存进行 session 存储。您获得的是令人难以置信的性能,但是您的所有 RAM 可能很快就会消失。您还可以创建一个计算机集群,将 session 存储在其 RAM 中。Redis 和 Memcache 非常适合这项任务,谷歌搜索一下将为您提供很好的资源,解释如何使用 Redis 或 Memcache 来存储 session 。

所有这一切的底线是:不要在 session 中存储太多数据。根据您的需求和预算 - 有 3 个选项可供选择如何存储和使用 session 。

关于php - 在 session cookie 中存储大量数据意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8168126/

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