会话variables是否有限制?
正如标题所说,会话variables是否存在限制(如果有),或者它们被视为常用variables,并且可以存储相等数量的数据?
我正在寻找是否有任何其他限制,如variablestypes,如最大长度,最大值等。
PS如果问题不清楚,请告诉我。
提前致谢!
正如@Thariama所说,variables的数量没有限制。 另外,对于会话中可以存储的数据量没有限制(我已经看过几十MB的会话)。
当会话的大小变大时,你会遇到各种各样的怪癖:PHP 5在session_start()
中将整个会话反序列化到内存中(使用默认的会话处理程序 – 当然你可以自己创build解决scheme )。 有20 MB的会话和50个并发用户,你的脚本开始被磁盘访问速度严重限制(也就是说,“脚本启动速度慢,糖蜜” – 会话本身会占用一个GB的RAM)。 最后,我们专门devise了一个盒子,在内存中保留尽可能多的会话,前端的盒子通过NFS访问它们(虽然这对我们有帮助,但这对你来说可能是矫枉过正的)。
请注意,对于磁盘上的许多并发用户和会话存储,会话临时文件的数量可能会导致文件系统限制问题(例如,在遇到stat()
性能问题之前,在一个目录中有多less个文件可以存在)或其他限制我们曾经发现一个盒子被configuration为只允许同时打开4096个文件的难题)。 这些都不是真正的会话特定的,但可以通过会话处理触发。
不,对于会话可能具有的空间没有限制(或会话可能有多lessvariables)。 唯一的限制是你的电脑上的规格,这是由你的php.ini中可用的memory_limit定义的。 请注意,此空间将在所有用户的所有会话中共享。
它是完全特定于您的networking服务器。 对于Apache,请看这里:
http://httpd.apache.org/docs/trunk/mod/mod_session.html
它甚至允许使用mod_session_dbd 将会话存储在数据库中 。 因此,每个会话1个文件的物理限制可以被克服。 而且,Apache可以configuration为跟踪存储在特定服务器或服务器组上的每个用户会话的可伸缩性。
简单的答案是否定的。 (也就是说,他们没有比其他任何PHPvariables有更多的限制…必须适应内存等)
但是请记住, $_SESSION
数据存储在某个地方,默认情况下是每个会话一个文件中的序列化数据。 所以有实际的限制。 您不希望在其中存储大量的信息,因为它们将在每个使用session_start()
页面上从数据存储中加载/保存。