我在本地 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