服务器,根据其配置,通常可以同时服务数百个请求 – 如果使用Apache,
MaxClients配置选项是一个说:
The MaxClients directive sets the
limit on the number of simultaneous
requests that will be served.
Any
connection attempts over the
MaxClients limit will normally be
queued, up to a number based on the
ListenBacklog directive.
Once a child
process is freed at the end of a
different request, the connection will
then be serviced.
两个客户端请求同一页的事实不是问题。
所以:
Will the requests be queued?
没有;除非:
>在某处有一些锁 – 例如,如果这两个请求来自同一个客户端,并且您在PHP中使用基于文件的会话,则可能发生这种情况:在执行脚本时,会话被“锁定”这意味着服务器/客户端将必须等待直到第一请求完成(并且文件解锁),以能够使用该文件为第二用户打开会话。
>请求来自同一个客户端和同一个浏览器;大多数浏览器会在这种情况下排队请求,即使没有服务器端产生这种行为。
>有超过MaxClients当前活动进程 – 请参阅之前的Apache手册中的引用。
Will they be ignored?
否:这意味着只有一个用户可以同时使用网站;这不会很好,会吗?
如果是这样,我不能发布这个答案,如果你在同一时间击中F5,看看有人回答!
(嗯,SO不是在PHP,但原则是一样的)
Any other possibility?
是^^
编辑后编辑OP和注释:
Will each request have its own script
instance?
没有“脚本实例”这样的东西:简单地说,发生请求到脚本的地方是:
> web服务器派生另一个进程来处理请求(通常,出于性能原因,这些fork是提前做的,但这没有改变)
>该进程从磁盘读取PHP脚本
>几个进程可以同时做到这一点:文件读取没有锁定
>将文件加载到内存中;在用于每个进程的不同的存储器块中
>内存中的PHP文件被“编译”为操作码 – 仍然在内存中
>那些操作码被执行 – 仍然来自属于回答您的请求的进程的内存块
真的,你可以有两个用户发送请求到同一个PHP脚本(或不同的PHP脚本,所有包含相同的PHP文件);这绝对不是一个问题,或没有一个网站,我曾经工作!