Поэтому я запускаю PHP-скрипт на моем виртуальном сервере godaddy (не ненавижу), который, как я ожидаю, займет около 5 минут, чтобы закончить выполнение. Сценарий является CURLing-страницами, но никогда не содержит более одной страницы за раз (это делается в цикле, повторно использующем одну и ту же переменную). Я изменил файл php5.ini следующим образом:
max_execution_time = 600 max_input_time = 120 memory_limit = 64M
Я проверил через phpinfo, что изменения ini-файла вступили в силу, однако я получаю ошибку Apache 500 через 120 секунд. Вот журнал ошибок за это время:
[Wed Jul 11 22:08:52 2012] [warn] [client **.**.**.***] mod_fcgid: read data timeout in 120 seconds [Wed Jul 11 22:08:52 2012] [error] [client **.**.**.***] Premature end of script headers: test.php
Если у кого-то есть идеи о том, почему я могу получить эти ошибки или какое-либо предложение о том, что нужно попробовать, я был бы признателен за помощь. Я заметил параметр в настройках php, установленный в 120, но я не уверен, что это будет иметь эффект: realpath_cache_tt
Я также установил ограничение времени в файле .php: set_time_limit (600);
Заранее спасибо.
UPDATE: вот что я пробовал в файле .htaccess:
RewriteEngine On RewriteCond %{HTTP_HOST} !^www\. RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] <IfModule mod_fcgid.c> IPCCommTimeout 7200 </IfModule>
Причины ошибки Apache 500 при загрузке любой страницы. Я также отключил FastCGI, но проблема все еще происходит.
RESOLVED RobB предложил следующее: IPCCommTimeout 7200, который должен был работать, однако из-за моего совместного использования godaddy это запрещено. Время найти новый хостинг.
Я не уверен в обработке этой проблемы на GoDaddy, но нормальное разрешение будет следующим:
Проблема, с которой вы столкнулись, связана с тем, что FastCGI выполняет PHP-скрипт, но он не генерирует ответ в течение таймаута IO по умолчанию (120 секунд), что приводит к ошибке внутреннего внутреннего сервера 500.
Попробуйте отредактировать файл confconfig по умолчанию VirtualHost, обычно расположенный в /etc/apache2/sites-available/default
и добавив эту директиву в контекст <VirtualHost>
:
<IfModule mod_fcgid.c> IPCCommTimeout 7200 </IfModule>
После сохранения изменений перезапустите apache2 с помощью этой команды: sudo /etc/init.d/apache2 restart
.
Из того, что я смог определить из GoDaddy, заключается в том, что максимальный срок составляет 120 секунд для PHP / FastCGI на совместном хостинге, который не может быть увеличен клиентом. Я бы посоветовал обратиться за помощью в помощь и, надеюсь, их репутация не будет работать, и вы сможете получить помощь.
Обновление. Не уверен, что это поможет, но вы можете попробовать перейти с FastCGI на PHP5 в свой центр управления хостингом (Настройки> Расширение файла> php5).