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

标签 php mysql session memcached

我需要在 $_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/

相关文章:

php - 如何使用 Laravel 5.1 将上传的文件名保存在表中

MySQL 上周按日期分组数据

PHP 和 MySQL 安全 Web 应用程序 - 整个网站作为单个 index.php 文件是或否?

javascript - 检查 session 上的 isset 会停止 javascript

java - Tomcat session 复制问题

php - 将我的 .txt 文件放在哪里以便 PHP 在 Laravel 中读取它们

php - Postgres 到 php 数组

php - 将 CURRENT_TIMESTAMP 保存为 GMT

mysql - 你如何做一个 mysql WHERE something = 'something' OR ... (PHP)

php - 如何将带有变量的 where 条件添加到我的 Controller ?