gpt4 book ai didi

php - 在$_SESSION里存很多信息可以吗?

转载 作者:可可西里 更新时间:2023-11-01 06:32:47 35 4
gpt4 key购买 nike

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

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

最佳答案

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

如果您存储的是带字符串的数组,那么文件的大小将大于字符串的长度加上键的长度,元数据的一些开销以及变量名称的大小。

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

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

顺便说一下,只为 session 使用整个内存没有多大意义。

除了这些硬限制之外,可能还有与一致请求的数量、硬盘速度等相关的性能限制。

由于你的问题很短,我认为你到目前为止没有遇到任何具体问题,所以我认为它超出了范围。例如。如果您真的不需要,则使用 memcached 只是开销。以及讨论根本无法回答的设计决策(从不在 session 中缓存)。

每个 session 100 或 200 KB(在您的系统上找到 session 目录并实际查看文件变得有多大)应该不会破坏您的程序。正如建议的那样,您应该注意在一段时间后自动删除不再需要的旧 session 文件。

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

关于php - 在$_SESSION里存很多信息可以吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5872727/

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