Apache 仅执行了一个请求,所有其他请求都等待第一个请求完成

Apache 仅执行了一个请求,所有其他请求都等待第一个请求完成

我在本地 Ubuntu 机器上安装了 Apache2 服务器和 PHP5.3。

我创建了文件 index.php 并在其中设置了 sleep 30 秒

<?php
sleep(30); // script sleep 30s
?>

当我在网络浏览器中运行“localhost/index.php”时,请求正在等待 30 秒。

在此期间,我删除该行sleep(30);并在新选项卡“localhost/index.php”中运行

第二个请求正在等待第一个请求完成,因此等待 30 秒。

这是个问题,因为 Apache 只运行一个进程/线程。如何配置 Apache 才能正常运行?或者有人能给我解释一下发生了什么吗?

答案1

您的会话文件可能出现死锁;关闭 session.auto_start,和/或在 sleep(30) 之前调用 session_write_close()。

答案2

它与 PHP 的会话有关。会话文件(位于 /tmp/SOMETHING 上的奇怪文件)在第一次请求时被锁定。

您应该在(或任何浪费时间的呼叫)session_write_close()之前拨打电话。如果您也不想使用它,您可以禁用它。sleep()session_autostart

相关内容