为什么Apache不能同时处理多个请求?

2022-08-30 22:56:22

我安装了 AMPPS。

我的Apache服务器无法同时处理多个php请求(例如,如果我多次调用,它们将按连续顺序处理)。 仅由 组成。localhost/script.phpscript.php<?php sleep(10); ?>

我读到MaxClients指令负责并发访问配置,但它在我的中根本没有。httpd.conf

禁用 Xdebug 并写入脚本的开头不起作用。session_write_close();

当我添加到文件的开头时,我的代码看起来像这样:session_start();

<?php

session_start();
session_write_close();
sleep(10);
phpinfo();

echo "Done";

当向 发出 5 个请求时,最后 4 个请求等待第一个请求结束,然后同时结束。localhost/script.php

请帮我解决问题。如果缺少帮助我解决此问题所需的任何信息,请通知并添加它。


答案 1

Apache肯定可以同时处理多个请求,您的Apache配置中肯定会出现问题。

这取决于您使用的Apache版本及其配置方式,但常见的默认配置使用具有多个线程的多个工作线程来处理同时的请求。有关其工作原理的概要,请参阅 http://httpd.apache.org/docs/2.2/mod/worker.html

您面临它的原因是:某个地方有一些锁定 - 例如,如果两个请求来自同一个客户端,并且您在PHP中使用基于文件的会话:当脚本正在执行时,会话是“锁定的”,这意味着服务器/客户端必须等到第一个请求完成(并且文件解锁)才能使用该文件打开会话。对于第二个用户。

请求来自相同的客户端和相同的浏览器;在这种情况下,大多数浏览器都会对请求进行排队,即使没有服务器端产生这种行为。


答案 2

可能是会话锁定的余韵。如果不需要编辑会话变量,请将其关闭。

http://php.net/manual/en/function.session-write-close.php


推荐