会话中可以存储的数据限制受到会话存储层的限制。默认会话存储是文件系统,一个会话存储在一个文件中。会话变量/数组键的名称及其数据以序列化形式存储。管道符号将变量名称和值彼此分开。
如果您存储带有字符串的数组,那么该文件将比字符串的长度加上键的长度以及元数据的一点开销以及变量名称的大小大。
文件的大小受文件系统的限制。例如,在 EXT3 中,每个文件为 16 GB。所以这是一个“太多”了。您不能在会话中存储比存储层允许的更多的数据。
我能想到的下一个极限就是你的记忆。由于PHP需要在请求结束时将数据从文件加载到内存中并从内存存储到文件中。因此,如果PHP 中有内存限制,那么这实际上也会限制会话的大小。例如,PHP 5.2 中的标准内存限制为 16MB,但这可能会因您的安装而异。
顺便说一句,仅将整个内存用于会话并没有多大意义。
除了这些硬限制之外,还可能存在与并发请求数量、硬盘速度等相关的性能限制。
由于你的问题很短,我认为到目前为止你没有遇到任何具体问题,所以我认为这超出了范围。例如,如果您并不真正需要,则使用 memcached 只是开销。以及讨论设计决策(不要在会话中缓存),这些决策根本无法一般回答。
每个会话 100 或 200 KB(找到系统上的会话目录并实际查看文件的大小)不应破坏您的程序。正如建议的,您应该注意不再需要的旧会话文件会在一段时间后自动删除。
要了解有关 PHP 中会话配置的更多信息,请参阅PHP 手册中的会话运行时配置。