Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP会话是否与无共享架构冲突?_Php_Scalability - Fatal编程技术网

PHP会话是否与无共享架构冲突?

PHP会话是否与无共享架构冲突?,php,scalability,Php,Scalability,当我第一次接触PHP时,我对无共享架构的想法感到惊讶。我曾经参加过一个项目,该项目的伸缩性受到不同HTTP请求之间共享数据的影响 然而,当我继续学习PHP时。我发现PHP有会话。这似乎与什么都不分享的想法相冲突 那么,PHP会话仅仅是为了使ASP/ASP.NET/J2EE的对等技术应运而生?高可伸缩性网站是否应该使用PHP会话?默认的PHP模型基于每个用户锁定会话。这意味着,如果用户A正在加载第1页和第2页,而用户B正在加载第3页,那么将发生的唯一延迟是第2页将不得不等到第1页完成-第3页仍将独

当我第一次接触PHP时,我对无共享架构的想法感到惊讶。我曾经参加过一个项目,该项目的伸缩性受到不同HTTP请求之间共享数据的影响

然而,当我继续学习PHP时。我发现PHP有会话。这似乎与什么都不分享的想法相冲突


那么,PHP会话仅仅是为了使ASP/ASP.NET/J2EE的对等技术应运而生?高可伸缩性网站是否应该使用PHP会话?

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


因此,它基本上是一个半对半的解决方案,最终效果良好——大多数用户不会同时加载多个页面;因此,会话锁定延迟通常较低。就来自不同用户的请求而言,仍然没有共享的内容。

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

我对Microsoft会话处理体系结构的了解还不够,无法对此发表评论,但与J2EE相比,PHPs会话处理的方式以及会话中实际存储的内容有很大的不同

在大多数页面中不使用会话会使应用程序的执行速度更快,并且可能更容易扩展,但是对于应用程序使用的任何数据,您都可以这样说


C.

没有-某些会话处理程序可能会这样做(我特别考虑在Microsoft上基于文件的会话处理),即使在这样的平台上,您也可以始终执行显式会话@symcbean,您的意思是,在基于Windows文件的会话处理中,所有HTTP请求都将通过一个锁来处理不同的会话吗?我尝试了一下。访问我的脚本(在我的问题中)使用Firefox和IE。它们是两个不同的会话,不会相互阻止。我不确定我对您的评论的理解是否正确。我也不确定symcbean指的是什么。@Morgan-无-一个会话->一个数据文件->一个锁-但同一服务器端会话可以与多个浏览器会话关联-即使对于单个浏览器窗口,也可能存在多个并发请求shm~,我对PHP无共享体系结构的最初理解可能不正确。在web应用程序中,您将始终共享某些内容。会话只是使共享更容易管理。如果会话数据存储在外部高速存储器(如memcache)中&速度。它仍然是可伸缩的。无论如何,我相信可伸缩性的原理是消除瓶颈。也就是说,减少共享依赖性。