PHP会话是否与Share-Nothing-Architecture冲突?

时间:2010-03-26 02:55:14

标签: php scalability

当我第一次见到PHP时,我很惊讶于Sharing-Nothing-Architecture这个想法。我曾经在一个项目中,其可扩展性受到不同HTTP请求之间共享数据的影响。

但是,当我继续学习PHP时。我发现PHP有会话。这看起来与不分享任何东西的想法相冲突。

那么,PHP会话是为了制作ASP / ASP.NET / J2EE的对应技术而发明的?高可伸缩网站应该使用PHP会话吗?

2 个答案:

答案 0 :(得分:1)

默认的PHP模型基于每个用户锁定会话。这意味着如果用户A正在加载第1页和第2页,而用户B正在加载第3页,那么唯一的延迟是第2页必须等到第1页完成 - 第3页仍将独立于第1页加载和2,因为没有任何共享的单独用户;仅在给定的会话中。

所以它基本上是一个半解决方案,最终可以正常工作 - 大多数用户不会同时加载多个页面;因此会话锁定延迟通常较低。就不同用户的请求而言,仍然没有任何共享。

答案 1 :(得分:1)

PHP允许您编写自己的会话处理程序 - 因此您可以使用默认钩子构建自己的语义 - 或者,如果您愿意,可以使用内置功能生成会话ID并处理浏览器端然后编写自己的代码来存储/获取会话数据(例如,如果你只想要登录页面,而不是其他页面在处理过程中锁定会话数据,那么使用标准钩子虽然并非不可能,但这有点棘手)。 / p>

我对用于会话处理的Microsoft体系结构不太了解,但是对于PHP会话处理的方式以及与J2EE相比实际存储在会话中的方式存在巨大差异。

在大多数网页中不使用会话会使应用程序的执行速度更快,并且可能更容易扩展 - 但您可以说应用程序使用的任何数据。

下进行。