php对象里面存对象,PHP:在$ _SESSION中存储'对象'

出于某种原因,HTTP是无状态协议。会话将状态焊接到HTTP上。根据经验,避免使用会话状态。

更新:HTTP级别没有会话的概念; 服务器通过为客户端提供唯一ID并告知客户端在每个请求上重新提交它来提供此功能。然后,服务器将该ID用作Session对象的大哈希表中的键。每当服务器获得请求时,它都会根据客户端随请求提交的ID,从会话对象的哈希表中查找会话信息。所有这些额外的工作都是可扩展性的双重打击(HTTP是无状态的一个重要原因)。Whammy One:它减少了单个服务器的工作量。

Whammy Two:它更难以扩展,因为现在你不能将请求路由到任何旧服务器 - 它们并不都具有相同的会话。您可以将具有给定会话ID的所有请求固定到同一服务器。这并不容易,而且它只是一个单点故障(不是整个系统,而是整个系统的大块)。或者,您可以在群集中的所有服务器之间共享会话存储,但现在您有更多复杂性:网络连接内存,独立会话服务器等。

鉴于这一切,您在会话中输入的信息越多,对性能的影响就越大(如Vinko指出的那样)。同样正如Vinko指出的那样,如果你的对象不是可序列化的,那么会话就会行为不端。因此,根据经验,避免在会话中放置超过绝对必要的内容。

@Vinko您通常可以通过在您发回的响应中嵌入您正在跟踪的数据并让客户端重新提交它来解决服务器存储状态,例如,在隐藏的输入中向下发送数据。如果您确实需要服务器端状态跟踪,则它应该位于您的后备数据存储区中。

(Vinko补充说:PHP可以使用数据库存储会话信息,并让客户端每次重新提交数据可能会解决潜在的可扩展性问题,但是打开了一大堆安全问题,你必须注意现在客户端控制所有您的国家)


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部