Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > ошибка при длительном выполнении скрипта


Автор: chiffa 9.12.2007, 19:42
Всем привет.  почему то при длительном выполненни скрипта выдат обишбку:



Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.


set_time_limit выставлен на 3000 так что времени должно хватить. может кто подскажет в чем проблема? Зарание всем спасибо.

Автор: Anarki 9.12.2007, 20:34
В error логах веб сервера смотреть не пробовали?

Автор: chiffa 9.12.2007, 20:45
пробывали. 

[Sun Dec 09 18:16:28 2007] [error] [client 127.0.0.1] Premature end of script headers: php.exe, referer: http://localhost/chonduhvan/

мне это особо не очем не говорит. может ты подкажешь что нибудь?

Автор: vasac 9.12.2007, 21:42
А при недлительном не выдает?

Автор: chiffa 9.12.2007, 22:03
оно начинает выполнять. выполняет н-й период времени и выдает ту ошибку что я написал

Автор: Kallisto 10.12.2007, 00:36
PHP под CGI ?

Автор: chiffa 14.12.2007, 16:09
как модуль Апачя

Автор: MoLeX 14.12.2007, 16:22
chiffa, а что у вас тута, какое значение?
max_execution_time

Автор: chiffa 14.12.2007, 17:17
30, н ов самом скрипте время выставляю через сет_тайм_лимит

Автор: MoLeX 14.12.2007, 17:42
а если в качестве теста выставить max_execution_time равное не 30 а 120 допустим то тоже самое или нет?

Автор: chiffa 14.12.2007, 17:54
без инзменений

Автор: skyboy 14.12.2007, 18:16
стоило поискать по "http://httpd.apache.org/docs/1.3/misc/FAQ-F.html#premature-script-headers". тогда вышли бы на http://httpd.apache.org/docs/1.3/misc/FAQ-F.html#premature-script-headers
Впрочем, и из перевода названия ошибки понятно, что скрипт не передал все заголовки серверу для отправки(видимо, отдал заголовок "начало отправки текста", потом внезапно умер, не отдав заголовок "конец текста").
возможно, дело в слишком долгом выполнении, которому даже set_time_limit == 3000 не помогает. сравни время записи в логах сервера("нет конца заголовков") со временем запуска скрипта.  если разница составляет 50 минут(3000 секунд), значит, скрипт слишком долго выполняется.
для отладки долгоиграющего скрипта(особенно, если у тебя есть цикл в скрипте) заведи спецтаблицу в БД и пусть скрипт на каждом шаге ведет собственный лог - увидишь, на каком этапе скрипт перестает подавать признаки жизни.

Добавлено через 1 минуту и 24 секунды
скрипт использует буфферизацию вывода(http://php.net/ob_start)?

Автор: chiffa 14.12.2007, 21:44
ob_start() не используется.

Скрипт выполняется минут 10, даже меньше...

а теперь в лог записало: HTTP/1.1" 500 618

Автор: chiffa 16.12.2007, 00:05
никто незнает?

Автор: vasac 16.12.2007, 11:55
Чего тут знать? PHP поставлен криво. Переустановите.
К time_limit, имхо, это отношения не имеет, так как это конфигарационный параметр интерпретатора, указывающий ему, когда нужно кончать пользовательский скрипт. Заголовки должен же возвращать сам интерпретатор. Хотя, возможно, сам апач обрывается недождавшись ответа от cgi.
Вы так и не описали, что происходит при выполнении небольших сценариев.

Автор: chiffa 17.12.2007, 17:19
я ж сказал. небоьшие сценарии выполняютсян на ура.  причем данная ошибка возникак как на локалке так и хосте....

Автор: infinityC 1.12.2009, 12:19
Для решения проблемы автора этой темы нужно поставить следующие настройки:
max_execution_time=0; в php.ini
или 
set_time_limit(0); // в самом сценарии, где 0-означает снятие ограничения по времени

и

Timeout 3000 #в httpd.conf , где 3000- максимальное количество секунд между приемом сервером запроса и возвращением результата, можно и больше ставить.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)