Apache выполнил только один запрос, а все остальные запросы ожидают завершения
У меня есть базовая установка сервера Apache2 и PHP5.3 на моей локальной машине с Ubuntu.
Я создал файл index.php и положил спать 30 секунд в нем
<?php
sleep(30); // script sleep 30s
?>
Когда я запускаю "localhost/index.php" в веб-браузере, запрос ждет 30 секунд.
В течение этого времени я удаляю эту строку sleep(30);
и запустите в новой вкладке "localhost/index.php"
Второй запрос ожидает первого до конца, так что подождите 30 секунд.
Это проблема, потому что Apache запускает только один процесс / поток. Как настроить Apache для нормальной работы? Или кто-то может объяснить мне, что происходит?
2 ответа
Возможно, у вас есть тупик в файле сеанса; отключите session.auto_start и / или вызовите session_write_close() перед сном (30).
Это связано с сессией PHP. Файл сеанса (этот причудливый файл, который находится в /tmp/SOMETHING) блокируется для первого запроса.
Вам следует позвонить session_write_close()
перед sleep()
(или любой тратящий время звонок). Вы можете отключить session_autostart
если вы не хотите его использовать.