Идея: Есть PHP-скрипт на удалённом серваке, который пытается подобрать по словарю имена таблиц в дырявом скрипте (mysql-инъекция) на другом удалённом серваке. Цель благородная - экономия трафика. Т.е. запускаю скрипт через браузер, потом иду и забираю результаты из текстового файла. Проблемы с реализацией: С маленькими словарями всё работает пучком, когда берёшь словарик побольше, скрипт в браузере работает некоторое время, потом всё - пипец! Серверная часть, я так понимаю, работу так же прекращает. Вопрос: Как продлить счастье? Настройки: Параметр PHP max_execution_time на сервере имеет Local Value "0" и Master Value "30". Сам волшебный скрипт содержит строчку INI_SET("max_execution_time",0); Помогите, плз, что ещё не так?
Напиши процедуру проверки времени И перезапускай сам себя с текущим паролем делов то Или сделай 2 идентичных скрипта и запускай из первого второй и наоборот
Скрипт отрабатывает по времени ровно 5 минут. Шелл у меня там, к сож. только вебовский Уже интереснее
была подожная трабла - решили set_time_limit(0); ignore_user_abort(1); + скрипт сам себя перезапускал отлично работало
туда же Вместо функции set_time_limit, недоступной в безопасном режиме, можно использовать ini_set("max_execution_time", 90000000);
Это уже выше было - значение 0 означает, что время выполнения скрипта не ограничено. Безопасный режим на сервере - off. Вообще, понял почему скрипт работает именно 5 минут. На php.net в описании директивы max_execution_time есть такой абзац: Your web server can have other timeouts. E.g. Apache has Timeout directive, IIS has CGI timeout function, both default to 300 seconds. See the web server documentation for meaning of it. Т.е. с интерпретатором PHP это вообще никак не связано, всю малину обламывает Апач.
Вот нашёл функцию apache_reset_timeout(): apache_reset_timeout() сбрасывает таймер сервера Apache, который по-умолчанию установлен в 300 секунд. При set_time_limit(0); ignore_user_abort(true) и периодических вызовах apache_reset_timeout(), Apache теоретически может работать вечно. Эта функция требует Apache 1. Теоретически она должна решить существующую проблему. На практике: Fatal error: Call to undefined function: apache_reset_timeout() in /home/blablabla/test4.php on line 39 Видимо, действительно придётся заморочиться с двумя взаимовызываемыми скриптами...
Эта функция недоступна в безопасном режиме. Если такие скрипты поработают с часок, они некисло нагрузят сервак и злой одмин забанит твой аккаунт.
Поискал по данной проблеме: http://bugs.php.net/bug.php?id=42579 Беда на уровне исходников. Нужно патчить PHP и пересобирать заново. У тебя какая версия? Обновись с http://snaps.php.net/. Вроде изменения по этой проблеме внесены в CVS ещё 7 сентября...
Проблема была решена так: PHP: @set_time_limit(0); @ini_set('max_execution_time',0); Скрипт на сервере продолжает работать, даже если в браузере его прибить. Решение было позаимствовано из rst sql dumper 2.0