会话变量是否有限制?

jol*_*olt 54 php session-variables

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

我正在寻找除了最大长度,最大值等变量类型之外是否还有其他限制.

PS如果问题不清楚,请告诉我.

提前致谢!

Pis*_*3.0 53

正如@Thariama所说,变量的数量没有限制; 此外,您可以在会话中存储的数据量没有限制(我已经看到会话数十MB的大小).

随着会话的大小变大,你会遇到各种怪癖:PHP 5将整个会话反序列化为内存session_start()(使用默认的会话处理程序 - 当然你可以自己创建解决方案); 使用20 MB会话和50个并发用户,您的脚本开始受到磁盘访问速度的严重限制(也就是"脚本启动速度慢,因为糖蜜" - 仅会话就会占用GB的RAM); 最后,我们专门用一个盒子在RAM中保存尽可能多的会话,并且前端盒通过NFS访问它们(尽管在我们的情况下它有所帮助,这对你来说可能有点过分).

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


Tha*_*ama 15

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


sha*_*mar 8

它完全特定于您的Web服务器.对于Apache,请看这里:

http://httpd.apache.org/docs/trunk/mod/mod_session.html

它甚至允许使用mod_session_dbd 将会话存储在数据库中.因此,可以克服每个会话1个文件的物理限制.此外,Apache可以配置为跟踪存储在特定服务器或服务器组上的每个用户会话,以实现可伸缩性.

  • @shamittomar:如果downvoter没有发表评论,即使你问他们,他们也许不会离开.对于单个downvotes,我不会担心它 - 只是一个无能/随机/驱动器的downvoter. (5认同)