gpt4 book ai didi

php - 对 PHP 脚本的同时请求

转载 作者:IT老高 更新时间:2023-10-28 11:55:55 26 4
gpt4 key购买 nike

如果 PHP 引擎已经在服务器上执行脚本,其他浏览器对同一脚本的同时请求会发生什么情况?

  • 请求是否会排队?
  • 他们会被忽略吗?
  • 每个请求都有自己的脚本吗实例?
  • 还有其他可能吗?

最佳答案

根据其配置,服务器通常可以同时处理数百个请求 -- 如果使用 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 中使用 基于文件的 session ,就会发生这种情况> :在执行脚本时, session 被“锁定”,这意味着服务器/客户端必须等到第一个请求完成(并且文件解锁)才能使用为第二个用户打开 session 的文件。
  • 请求来自同一个客户端和同一个浏览器;在这种情况下,大多数浏览器都会对请求进行排队,即使没有任何服务器端产生这种行为。
  • 当前事件的进程不止 MaxClients 个 - 请参阅之前 Apache 手册中的引述。


Will they be ignored?

否:这意味着只有一个用户可以同时使用一个网站;这不会很好,不是吗?

如果是这样的话,我不能发布这个答案,如果你同时按下 F5 看看是否有人回答!
(嗯,SO不在PHP中,但原理是一样的)


Any other possibility?

是的^^


编辑 OP 和评论后编辑:

Will each request have its own script instance?

没有“脚本实例”之类的东西:简单地说,对脚本发出请求的地方是:

  • 网络服务器 fork 另一个进程来处理请求(出于性能原因,这些 fork 通常是提前进行的,但这并没有改变)
  • 进程从磁盘读取 PHP 脚本
    • 多个进程可以同时执行此操作:文件读取没有锁定
    • 文件被加载到内存中;在每个进程的不同内存块中
  • 内存中的 PHP 文件已“编译”为操作码——仍在内存中
  • 执行这些操作码 - 仍然来自属于响应您请求的进程的内存块


实际上,您可以让两个用户向同一个 PHP 脚本发送请求(或向所有包含同一个 PHP 文件的不同 PHP 脚本)发送请求;这绝对不是问题,或者我曾经工作过的网站都不行!

关于php - 对 PHP 脚本的同时请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1430883/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com