![Apache 仅执行了一个请求,所有其他请求都等待第一个请求完成](https://linux22.com/image/602772/Apache%20%E4%BB%85%E6%89%A7%E8%A1%8C%E4%BA%86%E4%B8%80%E4%B8%AA%E8%AF%B7%E6%B1%82%EF%BC%8C%E6%89%80%E6%9C%89%E5%85%B6%E4%BB%96%E8%AF%B7%E6%B1%82%E9%83%BD%E7%AD%89%E5%BE%85%E7%AC%AC%E4%B8%80%E4%B8%AA%E8%AF%B7%E6%B1%82%E5%AE%8C%E6%88%90.png)
我在本地 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