замечал такое на некоторых хостингах работает пхп-скрипт минуты 3-5 и вдруг ни с того ни с сего останавливается. ни ошибок, ни ограничений на время выполнения. причем иногда это бывает вообще в самое разное время после запуска. с чем это может быть связано? браузер может оборвать соединение?
Есть такая функция ignore_user_abort + пару слов о скрипте, хотябы знать, с чем он работает, т.к. без дополнительной инфы очень тяжело помочь.
скорее всего останавливается ииза того что память у него кончается, попробуй количество памяти разрешенной увеличть(на некоторых хостингах выделяют больше на других меньше, поэтому он работает так) но если это не поможет попробуй в скрипте вести типа лога чтобы увидеть когда он остановился там можно разобраться почему P.S.ignore_user_abort по моему здесь не при чем, скрипт бы завершался сразу после закрытия браузера но не через 2-3 минуты
1) set_time_limit(0); 2) В php.ini стоят значения на выполнения, которые нельзя изменить; 3) Вариант Zedi.
ignore_user_abort как раз и нужен, у меня тоже скрипты останавливаются даже с нулевым тайм лимитом и при этом памяти им хватает. 2ТС: как и говорили - юзай set_time_limit + ignore_user_abort, весь вывод записывай во временный файл, а просматривай другим скриптом, так надежнее. Собственно подобный метод применяется в нормальных FTP чекерах на пыхе.
ну если браузер не закрывать то ignore_user_abort не нужен)) скрипт должен остановится сразу после закрытия браузера P.S. у меня скрипты останавливались сами и с set_time_limit + ignore_user_abort и памяти хватало, многое зависит от хоста
ну из этого нужно сделать вывод что нужно set_time_limit + ignore_user_abort + увеличение памяти))) если не получится то как я уже сказал вести лог программы, можно даже в окно брацзера только после каждого echo ставь flush()
если её включить - скрипт вообще нельзя будет остановить вся его работа логируется на экран. потому и пишу что он в разные моменты останавливается. а на денвере 100% работает. я сам пишу "нормальные чекеры" далеко не всегда допустимо включать ignore_user_abort он выводит лог на экран а если не выводит - то включен как раз ignore_user_abort @ob_end_flush(); @ob_flush(); @flush(); @ob_start(); В общем пришёл к выводу что надо попробовать увеличить память
ТС, не используй PHP для брутеров, ботов и т.п... Лучше используй Perl (это на счет некомпилируемых) или C++ (компилируемый). У меня была та же проблема, и я решил забить на написание тому подобных скриптов на PHP.
Скрипт можно остановить также просто перезаписав на его место новый скрипт с тем же именем и запустить: PHP: <?exit;?>