время работы скрипта в виндоуз, проблема в sleep() ?

Dzen

Новичок
время работы скрипта в виндоуз, проблема в sleep() ?

Приветствую!

Не могу понять в связи с чем пхп скрипт перестает работать, написал рабочий скрипт, в цикле foreach поставил sleep(20);
скрипт работает. Если мы меняем sleep(20); на sleep(400); например, то скрипт перестает работать после 15 минут. Цикл Foreach для теста сделал на час работы.

Проверку сделал таким образом, брал строки из файла и записывал их в другой файл, слип поставил 5 минут.
Скрипт сохранил 4 строки из 19 ! , то есть работал 15 минут всего.

Всё под виндой, денвер.
set_time_limit(0);

max_execution_time = 360000
max_input_time = 60000

В чём может быть косяк?
 

b-d

Новичок
Dzen,
Полагаю проблема в "обозревателе интернета". Максимальное время ожидания клиента тоже надо учитывать. Возможно, ignore_user_abort(true) позволит торчать процессу час, но для WEB-приложений это НЕ актуально.

Используй PHP отдельно от WEB-сервера..
 

Dzen

Новичок
Автор оригинала: b-d
Dzen,
Полагаю проблема в "обозревателе интернета". Максимальное время ожидания клиента тоже надо учитывать. Возможно, ignore_user_abort(true) позволит торчать процессу час, но для WEB-приложений это НЕ актуально.

Используй PHP отдельно от WEB-сервера..
игнор юзер аборт стоит в тру, в том то и дело, что браузер я закрываю и скрипт нормально работает - пишет в файл, однако после 15 минут прекращает:-\
 

b-d

Новичок
Мдя. Решил сам протестировать. WEB-сервер прерывает выполнение скрипта через 15 минут. Выдает ошибку (Apache 2.2.3, PHP5 работает как CGI):

[error] [client 127.0.0.1] Premature end of script headers: php-cgi.exe


Собственно, это и есть результат. Копать дальше желания нет (зачем?). Может нужно что-то поменять в настройках Apache, а может добавить особый код в скрипт..
 

Dzen

Новичок
да не понятно, у меня он ошибку не выдает, а просто умирает после 15 минут.

Причем он умирает если сделать sleep большой.
А если сделать sleep маленький секунд 10, и заставить скрипт обрабатывать большие данные, то он их в течении нескольких часов обрабатывает и всё ок.

Как-то тут дело именно в реакции на большой слип, а не на время работы скрипта по ходу дела.
 

denver

?>Скриптер
А что нужно? Любыми средствами впендосить туда sleep? Или всё-таки чтобы он с большими данными не отваливался?

Скрипт должен что-то выводить по окончании да еще и в браузер?
 

b-d

Новичок
Dzen,
Причем он умирает если сделать sleep большой
"Большой" это сколько?? Вероятнее всего твой скрипт выдает какие-то данные.. может echo, может Warning'и или пр. ошибки и поэтому Apache считает, что еще "не время". Когда он спит долго, скажем, больше 15 минут и не выдает ничего тогда его прерывают.

Это конечно-же догадки. Излагай все подробней.. Приведи код что-ли.. Запусти у себя такой код:

index.php
PHP:
<?php

ignore_user_abort(true);
for ($i=0; $i < 360; $i++)
{
    file_put_contents("test.txt", $i);
    sleep(10);
}

?>
Какое число в файле "test.txt"?
 
Сверху