Intereting Posts
Упругий поиск нечеткого соответствия с точными совпадениями, показывающими первый Использует ли порядок использования приложения функциональность в PHP? Как включить несколько моделей в одно представление для компонента Joomla 3.x, созданного с помощью Component Creator Идентификатор сеанса слишком длинный или содержит недопустимые символы, действительными символами являются az, AZ, 0-9 и '-,' FILTER_VALIDATE vs Preg_match. Какой из них использовать? Как я могу проверить действительные (не мертвые) ссылки программным образом с помощью PHP? Аутентификация REST в PHP (CodeIgniter) php возвращает смешанные типы данных – хорошие или плохие Zend Framework: как получить идентификатор последней вставленной строки? Как запустить внешнюю команду в качестве конкретного пользователя в PHP Как читать / отображать XML с помощью PHP Доступ к необъявленному статическому свойству: Doctrine \ ODM \ MongoDB \ Mapping \ Driver \ AnnotationDriver :: php-openID не работает с Yahoo Flash-просмотрщик в формате pdf Как определить, является ли страница RSS или ATOM-фидом

exec из php вызывает ошибку «Преждевременный конец скриптовых заголовков: php-cgi.exe»

У меня есть сценарий php, который вызывает внешнюю команду с помощью exec, который компилирует результат запроса пространственной базы данных в файл формы. В таблицах с большим количеством записей (например, 15 000) эта команда может занять до 7 минут. Скрипт отлично работает на сценариях, которые не занимают слишком много времени (возможно, <2 мин.), Но на более длинных сценариях (например, 7 минут) на странице будет отображаться «500 внутренних ошибок сервера». При рассмотрении журнала сервера Apache в этой ошибке указывается: «Преждевременный конец заголовков скриптов: php-cgi.exe». Я уже скорректировал максимальное время выполнения php, чтобы позволить более чем достаточно времени, поэтому я знаю, что это не так. Есть ли максимум Apache, который попал, или что-то еще?

Преждевременный конец заголовков скриптов означает, что тайм-аут веб-сервера для сценариев CGI был превышен вашим скриптом. Это тайм-аут веб-сервера, и он не имеет ничего общего с конфигурацией php.ini. Вам нужно посмотреть конфигурацию обработчика CGI, чтобы увеличить время, разрешенное для сценариев CGI.

Например, если вы используете mod_fastcgi, вы можете указать следующий параметр в своей конфигурации Apache: FastCgiServer -idle-timeout 600 который даст вам время ожидания 10 минут. По умолчанию fastcgi обеспечивает 30 секунд. Вы можете найти некоторые другие параметры fastcgi здесь: http://www.fastcgi.com/mod_fastcgi/docs/mod_fastcgi.html

По-видимому, файл httpd.conf по умолчанию, включенный в Apache 2.4, автоматически не включает дополнительный файл httpd-default.conf под / conf / extra (возможно, по дизайну), который включает в себя параметр таймаута. Поскольку параметр таймаута не определен, он возвращается к значению по умолчанию 30 секунд, а ваш скрипт (ы) отключается.

Я решил сделать следующее:

  • Откройте httpd.conf и добавьте следующую строку в конец:

Включить conf / extra / httpd-default.conf

  • Перезапущенный Apache, и это сработало.

Альтернативой было бы просто добавить следующие строки в файл httpd.conf :

Таймаут 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5

Надеюсь, это поможет кому-то там 🙂