会话变量是否有限制?

2022-08-30 10:05:25

正如标题所说,会话变量是否有限制(如果有),或者它们被视为常规变量并且可以存储等量的数据?

我正在查看除了变量类型的限制(如最大长度,最大值等)之外,是否还有其他限制。

附言:如果问题不清楚,请告诉我。

提前致谢!


答案 1

正如@Thariama所说,变量的数量没有限制。此外,会话中可以存储的数据量没有限制(我见过会话的大小为数十MB)。

随着会话的大小越来越大,你会遇到各种怪癖:PHP 5将整个会话反序列化到内存中(使用默认会话处理程序 - 当然,你可以制作自己的解决方案);对于20 MB的会话和50个并发用户,您的脚本开始受到磁盘访问速度的严重限制(又名“脚本启动速度像糖蜜一样慢” - 仅会话就会占用一GB的RAM);最后,我们专门设计了一个盒子来在其RAM中保留尽可能多的会话,并且前端盒子通过NFS访问它们(尽管它在我们的例子中有所帮助,但这对你来说可能有些过分)。session_start()

请注意,对于磁盘上的许多并发用户和会话存储,会话临时文件的数量可能会导致文件系统限制(例如,在遇到性能问题之前,一个目录中可以有多少个文件)或其他限制(我们曾经发现一个框配置为仅允许同时打开4096个文件)。这些都不是真正特定于会话的,但可以通过会话处理触发。stat()


答案 2

不,会话可能具有的空间(或会话可能拥有的变量数)没有限制。唯一的限制是计算机上的规范,这是由 php.ini 中的可用memory_limit定义的。请注意,此空间将在所有用户的所有会话之间共享。


推荐