根据服务器的配置,服务器通常可以同时处理 数百个请求 -如果使用Apache,则MaxClients
配置选项就是这样:
该
MaxClients指令设置了将同时服务的请求数的限制。
任何超出MaxClients限制的连接尝试 通常都会排队,最多可以排队一个基于ListenBacklog指令的数目。
一旦在另一个请求结束时释放了子进程,则将为连接提供服务。
两个客户端请求同一页面的事实不是问题。
因此:
请求会排队吗?
没有 除非:
- 某处有一些 锁定 -例如,如果两个请求来自同一客户端,并且您正在 PHP 中使用 基于文件的会话 ,则可能发生:在执行脚本时,该会话被“锁定”,意味着服务器/客户端将必须等到第一个请求完成 (并且文件已解锁 )后,才能使用该文件为第二个用户打开会话。
- 请求来自相同的客户端和相同的浏览器;在这种情况下,即使没有服务器端产生这种行为,大多数浏览器也会将请求排队。
MaxClients
当前活动的进程不止这些-请参阅Apache手册中的引言。
他们会被忽略吗?
不:这意味着只有一个用户可以同时使用一个网站; 这不是很好吗?
如果是这样,如果您同时按下F5以查看是否有人回答,我将无法发布此答案!
(嗯,SO不是用PHP编写的,但是原理是相同的)
还有其他可能性吗?
是的^^
编辑OP和注释后进行编辑:
每个请求都会有自己的脚本实例吗?
没有“ 脚本实例 ” 这样的东西:简单地说,向脚本发出请求的情况是:
- Web服务器会分叉 另一个进程 来处理请求 (通常出于性能原因,这些分叉是预先进行的,但这没有任何改变)
- 该过程从磁盘读取PHP脚本
- 多个进程可以同时执行此 *** 作 :文件读取没有锁定
- 文件被载入内存; 在每个进程的不同内存块中
- 内存中的PHP文件被“ 编译 ”为 *** 作码-仍在内存中
- 这些 *** 作码仍被执行-仍来自属于响应您请求的进程的内存块
实际上,您可以让两个用户向同一个PHP脚本 (或所有都包含同一个PHP文件的不同PHP脚本)
发送请求;绝对不是问题,或者我曾经使用的网站都无法正常工作!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)