![]() |
Время выполнения Php-скрипта
Идея: Есть PHP-скрипт на удалённом серваке, который пытается подобрать по словарю имена таблиц в дырявом скрипте (mysql-инъекция) на другом удалённом серваке. Цель благородная - экономия трафика. Т.е. запускаю скрипт через браузер, потом иду и забираю результаты из текстового файла.
Проблемы с реализацией: С маленькими словарями всё работает пучком, когда берёшь словарик побольше, скрипт в браузере работает некоторое время, потом всё - пипец! Серверная часть, я так понимаю, работу так же прекращает. Вопрос: Как продлить счастье? Настройки: Параметр PHP max_execution_time на сервере имеет Local Value "0" и Master Value "30". Сам волшебный скрипт содержит строчку INI_SET("max_execution_time",0); Помогите, плз, что ещё не так? |
PHP код:
|
Кажется если в конфиге определено master значение, то его никакими директивами изменить нельзя...
|
ееслина сервере отключена set_time_limit(0); то попробуй запуск по крону
|
Напиши процедуру проверки времени
И перезапускай сам себя с текущим паролем делов то Или сделай 2 идентичных скрипта и запускай из первого второй и наоборот |
Цитата:
Цитата:
Цитата:
|
Если че стучи придумаем - я так дампер написал - отлично пашет.
|
была подожная трабла - решили
set_time_limit(0); ignore_user_abort(1); + скрипт сам себя перезапускал отлично работало :) |
Player1, уже пробовал - не работает :(
|
стукни мне в приват попробуем решить траблу :) Может не так юзал :)
|
туда же
Вместо функции set_time_limit, недоступной в безопасном режиме, можно использовать ini_set("max_execution_time", 90000000); |
а перлом не удобнее будет?
|
Цитата:
Вообще, понял почему скрипт работает именно 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 код:
Решение было позаимствовано из rst sql dumper 2.0 :) |
омг, человек более полугода пытался решить проблему, наконец решил :d
|
| Время: 08:43 |