php – 可以在$_SESSION中保存大量信息吗?

我需要在$_SESSION中存储许多数组,以防止从 MySQL中检索信息.好吗? $_SESSION中的“太多”信息是多少,或者没有“太多”?谢谢.

附:或者最好使用http://php.net/manual/en/book.memcache.php

您可以在会话中存储的数据限制受会话存储层的限制.默认会话存储是文件系统,一个会话存储在一个文件中.存储会话变量/ array-key的名称以及它在 serialized form中的数据.管道符号将变量名称和值彼此分开.

如果您正在使用字符串存储数组,那么该文件将大于字符串的长度加上键的长度,并且元数据的开销和变量名称的大小也会相似.

文件大小受文件系统限制.例如,在EXT3中,每个文件为16 GB.所以这是一个“太多”.您无法将更多数据存储到会话中,而不是存储层允许的数据.

我能想到的下一个限制就是你的记忆.因为PHP需要将文件中的数据加载到内存中,并在请求结束时将内存中的数据存储到文件中.所以如果你有一个memory limit in PHP那么这实际上会限制你的会话的大小.例如,PHP 5.2中的标准内存限制为16MB,但这可能因您的安装而异.

使用整个内存进行会话只是没有多大意义.

除了这些硬限制之外,可能存在性能限制,这些限制与同等请求的数量,硬盘的速度等有关.

由于你的问题非常简短,我认为你到目前为止没有遇到任何具体的问题,所以我认为这将超出范围.例如.如果你真的不需要使用memcached将只是开销.除了讨论设计决策(从不在会话中缓存)之外根本无法回答.

每个会话100或200千字节(找到您系统上的会话目录并实际查看文件的大小)不应该破坏您的程序.根据建议,您应该注意不再需要的旧会话文件会在一段时间后自动删除.

要了解有关PHP中会话配置的更多信息,请参阅Session Runtime Configuration in the PHP Manual.

相关文章

Hessian开源的远程通讯,采用二进制 RPC的协议,基于 HTTP 传输。可以实现PHP调用Java,Python,C#等多语...
初识Mongodb的一些总结,在Mac Os X下真实搭建mongodb环境,以及分享个Mongodb管理工具,学习期间一些总结...
边看边操作,这样才能记得牢,实践是检验真理的唯一标准.光看不练假把式,光练不看傻把式,边看边练真把式....
在php中,结果输出一共有两种方式:echo和print,下面将对两种方式做一个比较。 echo与print的区别: (...
在安装好wampServer后,一直没有使用phpMyAdmin,今天用了一下,phpMyAdmin显示错误:The mbstring exte...
变量是用于存储数据的容器,与代数相似,可以给变量赋予某个确定的值(例如:$x=3)或者是赋予其它的变...