Назад | Перейти на главную страницу

Apache не отвечает, если выполнение скрипта PHP занимает слишком много времени

У нас есть приложение PHP, созданное с помощью Yii Framework, которое подключается к базе данных Oracle и работает на Apache, настроенном с Zend Core для Oracle. Apache также запускает другое приложение на другом порту.

У нас есть страница, которая делает сложный запрос к БД, выполнение которого занимает около 10 минут. Мы находимся в процессе сокращения времени, которое требуется на этот запрос, но пока это проблема.

Проблема в том, что после вызова страницы PHP никакие другие страницы не отвечают, даже те, которые не запрашивают БД. Другое приложение, запускаемое Apache, которое не использует Yii и использует другую БД, также не отвечает.

Почему это происходит? Разве Apache не должен иметь возможность обрабатывать несколько запросов одновременно, даже если один все еще выполняется?

Ошибка, полученная от Apache, следующая, которая должна быть общей ошибкой сообщения, выдаваемой при сбое связи с БД:

fcgi: не удается прочитать ответ от D: \ Programmi \ Zend \ Core для Oracle \ bin \ php-cgi.exe

Мы не трогали большую часть конфигурации Apache по умолчанию, поэтому maxClients и ServerLimit должны быть установлены на 256 (по умолчанию).

Есть идеи, где искать проблему?

В любом случае проблема в том, что после вызова php-страницы все приложение "зависает", никакие другие страницы не отвечают, даже те, у которых нет запроса к БД.

Вы используете сеансы в этой БД? PHP монопольно блокирует файл сеанса до завершения выполнения сценария.