Как избежать CGI Timeout? - PullRequest
       17

Как избежать CGI Timeout?

2 голосов
/ 05 апреля 2011

У меня есть процесс PHP, который пользователь запускает в браузере, но обычно занимает довольно много времени - свыше 5 минут. Мы только что переключились на новый сервер, и когда мы пытаемся запустить скрипт сейчас, он постоянно истекает ровно через 4 минуты, отправляя на страницу 500 Internal Server Error и выводя следующие ошибки в журнал ошибок:

Тайм-аут ожидания выхода из CGI сценарий

Преждевременный конец заголовков скриптов: cgi_wrapper

Интересно то, что процесс PHP, похоже, завершается в фоновом режиме. Если мы отойдем от страницы «Ошибка 500» и немного подождем, необходимые изменения в скрипте все же будут сделаны.

Есть ли какой-нибудь способ снять этот предел CGI, который, похоже, был наложен на нас? Я читал о FastCGI, но не уверен, как установить это на наш сервер (Apache, centOS, PHP 5.3).

Спасибо за вашу помощь!

1 Ответ

1 голос
/ 05 апреля 2011

Вероятно, время ожидания веб-сервера в ответ на сценарий.На самом деле с четырьмя минутами сервер кажется довольно терпеливым.Значение по умолчанию для подключений FastCGI составляет 30 секунд.

Это может помочь в отправке (и flush() в) некоторых данных клиенту, пока он ожидает.Это сообщает и веб-серверу, и браузеру, что запрос все еще активен.

Например, если ваш скрипт в конце отображает HTML-страницу, вы можете время от времени отправлять <!-- please wait... ->.Он не будет виден пользователю.

В любом случае, любой скрипт, выполнение которого занимает более 10 секунд, является плохим дизайном.Я предлагаю выполнять эту работу в фоновом режиме в отдельном процессе, и пусть клиент опрашивает статус завершения.Имейте в виду, что некоторые браузеры / прокси могут задерживать запрос независимо от того, что вы делаете на сервере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...