Php 在会话cookie中存储大量数据的含义是什么?

Php 在会话cookie中存储大量数据的含义是什么?,php,session,dataset,Php,Session,Dataset,谁能解释一下在会话中存储大量数据的缺点,或者给我指出一些阅读材料 我还想知道在会话中存储数据和从数据文件中读取数据之间是否有任何区别?这是一个很好的链接: 会话数据也是非常昂贵的工作负载。最好的方法是存储cookie或session_id,并使用它从dbfile/rdbms中查找所需内容。这还允许您的站点在多服务器环境中运行,其中as会话数据仅限于一个会话。如果您在会话中存储大量数据,您的输入/输出性能将下降,因为将有大量的读/写操作 默认情况下,PHP中的会话存储在平面文件的/tmp目录中。因

谁能解释一下在会话中存储大量数据的缺点,或者给我指出一些阅读材料

我还想知道在会话中存储数据和从数据文件中读取数据之间是否有任何区别?

这是一个很好的链接:


会话数据也是非常昂贵的工作负载。最好的方法是存储cookie或session_id,并使用它从dbfile/rdbms中查找所需内容。这还允许您的站点在多服务器环境中运行,其中as会话数据仅限于一个会话。

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

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

PHP允许您通过
session\u set\u save\u handler()
函数覆盖其默认会话处理程序,您可以在该函数中重新定义会话的读取/写入/维护方式

您还可以通过php.ini文件覆盖该文件,在该文件中通过
session.save\u handler
指令指定它

现在,拥有大量存储大数据的会话意味着将创建大量文件,并且由于硬盘驱动器的运行方式(当然是机械的,这仍然是常见的),查找这些文件需要一些时间。 你拥有的越多,找到它的时间就越长。它们越大,阅读时间就越长。如果你有很多这样的问题,而且问题很大——麻烦增加了一倍,那么就需要改变方法

那么解决方案是什么?

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

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

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

所有这些的底线是:不要在会话中存储太多数据。
根据您的需要和预算,有3种选项可用于存储和使用会话。

请看您的经历。请停止在帖子上签名(你的标题应该描述问题,而不是列出技术和主题)