Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Время выполнения Php-скрипта (https://forum.antichat.xyz/showthread.php?t=56724)

otmorozok428 27.12.2007 18:17

Время выполнения Php-скрипта
 
Идея: Есть PHP-скрипт на удалённом серваке, который пытается подобрать по словарю имена таблиц в дырявом скрипте (mysql-инъекция) на другом удалённом серваке. Цель благородная - экономия трафика. Т.е. запускаю скрипт через браузер, потом иду и забираю результаты из текстового файла.

Проблемы с реализацией: С маленькими словарями всё работает пучком, когда берёшь словарик побольше, скрипт в браузере работает некоторое время, потом всё - пипец! Серверная часть, я так понимаю, работу так же прекращает.

Вопрос: Как продлить счастье?

Настройки:
Параметр PHP max_execution_time на сервере имеет Local Value "0" и Master Value "30".

Сам волшебный скрипт содержит строчку INI_SET("max_execution_time",0);

Помогите, плз, что ещё не так?

Macro 27.12.2007 18:21

PHP код:

set_time_limit(0);
ignore_user_abort(1); 

Кажется, так

groundhog 27.12.2007 18:27

Кажется если в конфиге определено master значение, то его никакими директивами изменить нельзя...

mr.The 27.12.2007 18:29

ееслина сервере отключена set_time_limit(0); то попробуй запуск по крону

spider-intruder 27.12.2007 18:37

Напиши процедуру проверки времени
И перезапускай сам себя с текущим паролем делов то


Или сделай 2 идентичных скрипта и запускай из первого второй и наоборот

otmorozok428 27.12.2007 18:50

Цитата:

Кажется если в конфиге определено master значение, то его никакими директивами изменить нельзя...
Скрипт отрабатывает по времени ровно 5 минут.

Цитата:

если на сервере отключена set_time_limit(0); то попробуй запуск по крону
Шелл у меня там, к сож. только вебовский

Цитата:

Или сделай 2 идентичных скрипта и запускай из первого второй и наоборот
Уже интереснее :)

spider-intruder 27.12.2007 18:52

Если че стучи придумаем - я так дампер написал - отлично пашет.

Player1 27.12.2007 18:58

была подожная трабла - решили
set_time_limit(0);
ignore_user_abort(1);

+

скрипт сам себя перезапускал отлично работало :)

otmorozok428 27.12.2007 19:01

Player1, уже пробовал - не работает :(

Player1 27.12.2007 19:21

стукни мне в приват попробуем решить траблу :) Может не так юзал :)

Player1 27.12.2007 21:20

туда же
Вместо функции set_time_limit, недоступной в безопасном режиме, можно использовать ini_set("max_execution_time", 90000000);

[Raz0r] 27.12.2007 23:11

а перлом не удобнее будет?

otmorozok428 28.12.2007 10:51

Цитата:

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 это вообще никак не связано, всю малину обламывает Апач.

otmorozok428 28.12.2007 11:28

Вот нашёл функцию 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

Видимо, действительно придётся заморочиться с двумя взаимовызываемыми скриптами...

groundhog 28.12.2007 11:49

Эта функция недоступна в безопасном режиме.

Цитата:

Видимо, действительно придётся заморочиться с двумя взаимовызываемыми скриптами...
Если такие скрипты поработают с часок, они некисло нагрузят сервак и злой одмин забанит твой аккаунт.

otmorozok428 28.12.2007 11:55

Цитата:

Эта функция недоступна в безопасном режиме
Safe_mode=OFF

groundhog 28.12.2007 12:20

Поискал по данной проблеме: http://bugs.php.net/bug.php?id=42579

Беда на уровне исходников. Нужно патчить PHP и пересобирать заново. У тебя какая версия? Обновись с http://snaps.php.net/. Вроде изменения по этой проблеме внесены в CVS ещё 7 сентября...

Player1 28.12.2007 12:29

Цитата:

Сообщение от groundhog
Если такие скрипты поработают с часок, они некисло нагрузят сервак и злой одмин забанит твой аккаунт.

если он не забухал :) то шанс приличный, хотя пока не парься - у админа тоже бывает новый год :)

otmorozok428 28.12.2007 12:48

Цитата:

Поискал по данной проблеме: http://bugs.php.net/bug.php?id=42579

Беда на уровне исходников. Нужно патчить PHP и пересобирать заново. У тебя какая версия? Обновись с http://snaps.php.net/. Вроде изменения по этой проблеме внесены в CVS ещё 7 сентября...
Да, я это уже тоже видел :(

Цитата:

У тебя какая версия?
PHP Version 4.2.2

otmorozok428 16.07.2008 20:00

Проблема была решена так:
PHP код:

@set_time_limit(0);
 @
ini_set('max_execution_time',0); 

Скрипт на сервере продолжает работать, даже если в браузере его прибить.
Решение было позаимствовано из rst sql dumper 2.0 :)

.:EnoT:. 16.07.2008 20:56

омг, человек более полугода пытался решить проблему, наконец решил :d


Время: 08:43