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 если вы не хотите его использовать.

Другие вопросы по тегам