php 变量大小限制,关于php:会话变量是否有限制?

博客探讨了PHP会话变量的限制,指出虽然理论上没有特定的变量数量限制,但每个会话变量存储的数据量受限于服务器资源,如内存和磁盘空间。会话数据默认存储在文件中,可能导致磁盘I/O问题和性能瓶颈。文章建议考虑使用其他缓存机制,避免在会话中存储大量或频繁访问的数据,并提醒开发者注意会话对服务器性能的影响。
摘要由CSDN通过智能技术生成

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

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

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

提前致谢!

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

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

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

不,会话可能具有的空间(或会话可能拥有多少变量)没有限制。

唯一的限制是您的计算机上的规格,这是由您的php.ini中的可用memory_limit定义的。

请注意,此空间将在所有用户的所有会话之间共享。

问题不在于我可以拥有多少"会话变量",而在于每个会话变量可以存储多少数据。

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

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

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

您可以在PHP中编写自己的会话处理程序来执行此操作 - 尽管编译后的模块可能更有效。

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

目前+ 2 / -1;我们可以将关于SO功能的讨论带到meta.stackoverflow.com吗?关于在那里投票有很多有用的答案。

Downvoted,因为我们正在讨论PHP会话。这个Apache模块与PHP完全无关。

简单回答是不。 (也就是说,它们没有比任何其他PHP变量更多的限制......必须适合内存等)

但是,请记住$_SESSION数据存储在某处,默认情况下,每个会话在一个文件中作为序列化数据存储。因此存在实际限制。您不希望在其中存储大量信息,因为它们将在使用session_start()的每个页面上从数据存储中加载/保存。

模板数据可以被视为"巨大的blob"吗?更准确地说,我的模板数据是从HTML文件中用file_get_contents();获取的。大多数情况下它不会比某些KB更大,但将来可能会发现我必须在此会话变量中加载更多更大的模板。

我的主要观点是$_SESSION数据不是免费的。即使您不使用它,您放入其中的所有内容都将加载到每个页面视图中。如果您需要在每个页面视图上访问该模板数据(因此它将以某种形式加载到内存中),那么它是否来自会话或其他地方并不重要。我个人不会将会话用于那种数据,但那只是我。

@Tom:不要这样做。我已经看过了,疯狂就是这样。会话用于存储您需要快速访问的临时数据;模板不是真正的临时(是的,在这种情况下,我认为它们是"巨大的blob")。考虑一些其他模板的缓存机制,但不要将它们放入$ _SESSION。

它不是用于缓存,而是双重POST预防。 POST完成后,它们未被设置。我的系统非常奇怪,同意了。但PRG只是不会削减我的情况,因为我有太多的回复消息。

@Tom:是的,这是对会话的很好用。不知道它与模板有什么关系。

但是在会话中保留某些内容(比如用户信息数组)而不是从数据库中重新查询它会更好吗?

@Zeke,"更好"是主观的,特别是没有细节。但一般来说,通过memcached之类的东西实现适当的缓存层比使用会话作为穷人的缓存更受欢迎。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值