Pas*_*TIN 139
服务器根据其配置通常可以同时为数百个请求提供服务- 如果使用Apache,MaxClients配置选项就是:
该
MaxClients指令设置了将要服务的同时请求数量的限制.
任何超过MaxClients限制的连接尝试 通常都会排队,最多可以是基于ListenBacklog指令的数字.
一旦在另一个请求结束时释放子进程,就会为该连接提供服务.
两个客户端请求同一页面的事实不是问题.
所以:
请求会排队吗?
不 除非:
MaxClients活动流程 - 请参阅之前Apache手册中的引用.他们会被忽视吗?
否:这意味着只有一个用户可以同时使用网站; 这不会很好,是吗?
如果是这样的话,我不能发布这个答案,如果你在同一时刻点击F5,看看有人回答了!
(好吧,SO不是PHP,但原理是一样的)
还有其他可能吗?
是的^^
编辑OP和评论后编辑:
每个请求都有自己的脚本实例吗?
没有" 脚本实例 " 这样的东西:简单地说,发生脚本请求的地方是:
实际上,您可以让两个用户向同一个PHP脚本发送请求(或者向所有包含相同PHP文件的不同PHP脚本)发送请求; 这绝对不是问题,或者我曾经工作过的网站都没有用!
mau*_*ris 19
如果2个客户端同时调用服务器,则服务器很可能几乎同时回复两个客户端.我在这里的客户端将它们定义为浏览器级别.
这意味着在同一台机器上,如果您使用2个浏览器同时加载同一个网站/页面,则两个浏览器应同时加载.
但是,由于我们讨论的是PHP,您需要对会话进行特殊说明.如果您的页面使用会话,则服务器一次只能提供一页.这是因为会话文件将被锁定,直到脚本退出.
看看这个例子.这2个文件是从同一个会话加载的,同一个浏览器是同一个用户.
scripta.php requested scripta.php served
------+---+---------------------------------+------------------------>
scripta.php started
scriptb.php requested scriptb.php started
---------------+-------------------------------+-----------------+--->
scriptb.php served.
Run Code Online (Sandbox Code Playgroud)
请注意,scriptb.php仅在提供scripta.php之后启动.这是因为当scripta.php启动时,会话文件被锁定到其他脚本,以便scripta.php可以写入会话文件.当scripta.php完成时,会话文件被解锁,因此其他脚本可以使用它.因此,scriptb.php将等待,直到释放会话文件,然后它将锁定会话文件并使用它.
此过程将不断重复以防止多个脚本写入同一会话文件导致延迟.因此,建议session_write_close您在不再使用会话时调用(),尤其是在使用许多iframe或AJAX的网站上.
我自己就遇到了这个。基本上你需要调用session_write_close()来防止单用户锁定。确保一旦你打电话session_write_close()你就不要尝试修改任何会话变量。一旦你调用它,从那时起将会话视为只读。
| 归档时间: |
|
| 查看次数: |
51508 次 |
| 最近记录: |