Бесконечно работающий скрипт PHP

Discussion in 'PHP' started by BOSS, 2 Dec 2013.

  1. BOSS

    BOSS Member

    Joined:
    15 Jun 2010
    Messages:
    86
    Likes Received:
    5
    Reputations:
    0
    Как запустить на сервере PHP скрипт, который будет работать после закрытия браузера? Можно ли вообще такое сделать? У меня есть шеллы к некоторым сайтам, пытался там запустить скрипт.
    Скрипт выводил время в тхт документ. Запустил, закрыл браузер - работает. Проработал скрипт аж 1:30 мин, дольше не работает. Мне же нужно организовать постоянную работу скрипта. Можно ли как-то обойти этот предел? Везде ли стоит такого рода ограничение на длительность работы скрипта?
     
  2. Sum.cogitans

    Sum.cogitans Elder - Старейшина

    Joined:
    7 Sep 2013
    Messages:
    173
    Likes Received:
    32
    Reputations:
    19
    Время работы скрипта озвучена в php.ini - переменная max_execution_time.
    Можно попробовать увеличить зациклив set_time_limit() или ini_set() если у php отключен безопасный режим.
     
  3. BOSS

    BOSS Member

    Joined:
    15 Jun 2010
    Messages:
    86
    Likes Received:
    5
    Reputations:
    0
    ini_set() уже ставил, писал так:
    PHP:
    ini_set("max_execution_time""99999"); 
    В любом случае скрипт останавливался после 150 секунд, не всегда есть доступ к php.ini, но иногда это меня выручит. Спасибо за совет. С другими серверами, где нет доступа к php.ini никак нельзя решить проблему?
     
  4. Sum.cogitans

    Sum.cogitans Elder - Старейшина

    Joined:
    7 Sep 2013
    Messages:
    173
    Likes Received:
    32
    Reputations:
    19
    Если php в безопасном режиме: set_time_limit() или .htaccess
     
  5. Asin

    Asin New Member

    Joined:
    28 Oct 2010
    Messages:
    5
    Likes Received:
    0
    Reputations:
    0
    Для этого есть php cron . По теме:
    http://habrahabr.ru/post/132609/
     
  6. Melfis

    Melfis Elder - Старейшина

    Joined:
    25 Apr 2011
    Messages:
    505
    Likes Received:
    105
    Reputations:
    53
    BOSS, И не забудь почитать комменты к хабрапосту
     
  7. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    В свое время закачивал perl скрипт через PHP shell и запускал как фоновый процесс. Perl скрипт представлял из себя TCP сервер (который изначально делал fork) на одного клиента с логином, паролем и исполнял команды с правами, под которыми был запущен...

    PHP создан для того что бы умирать - http://habrahabr.ru/post/179399/, используй "более системные" языки типа Perl/Python и запускай их отдельным потоком. Все это дело естественно палится и открытые порты могут быть закрыты фаерволом, это сейчас я понимаю как можно было накоидть туннель и замутить крутой бекдор, но раньше подобная шняка на бразильских сервера могла работать около месяца, на более нормальных хостингах держалась от дня до недели...

    В свое время писал скриптос на Perl небольшой парсер гугла с поиском сайтов с уязвимым PHPbb форумом - проверка на сплоит - закачка туда через wget или fetch скрипта установщика 3proxy (там настройки были и запуск в потоке отдельном) и о результатах в лог. Запустил подождал 20 минут и у тебя списочек нулевых прокси без логов :) Дня их работы было вполне достаточно. Эх были времена....
     
    _________________________
  8. BOSS

    BOSS Member

    Joined:
    15 Jun 2010
    Messages:
    86
    Likes Received:
    5
    Reputations:
    0
    Cron, на сколько мне известно, запускает программы в определенное время. Не совсем понял, зачем он нужен в моей ситуации, если же мне не нужно запускать скрипт в какой-то период, а нужно запустить его лишь 1 раз, но чтобы он не выключался.

    Gar|k, ты закачивал perl скрипт, но у меня пхп скрит. С perl'ом я не знаком. Твое решение как я понял мне не подойдет. Как быть? Скрипт нужно запустить как-то, какие у меня есть варианты? Раньше видел на серверах разного рода постоянно работающие скрипты. Все дело в том, что в php.ini не стояло ограничение на время работы скрипта?
     
  9. b3

    b3 Moderator

    Joined:
    5 Dec 2004
    Messages:
    2,041
    Likes Received:
    933
    Reputations:
    199
    http://php.net/manual/ru/function.ignore-user-abort.php
     
    _________________________
  10. BOSS

    BOSS Member

    Joined:
    15 Jun 2010
    Messages:
    86
    Likes Received:
    5
    Reputations:
    0
    ignore_user_abort(1); // Игнорировать обрыв связи с браузером
    Это я уже использовал в своем скрипте. Скрипт останавливается не из-за закрытия браузера, он останавливается, потому что стоит лимит времени на выполнение скрипта, который мне и нужно обойти каким-то образом.

    В статье на хабре писали в комментариях:
    Теперь собственно вопрос:
    Как это сделать? У меня имеется шелл на сайте, имеется доступ к файлам. Как мне запустить скрипт из консоли? Никогда такого не делал. Действительно ли сейчас это актуально? То есть, если я запущу скрипт из консоли он будет работать без ограничения времени? Как-то даже не верится...
     
  11. b3

    b3 Moderator

    Joined:
    5 Dec 2004
    Messages:
    2,041
    Likes Received:
    933
    Reputations:
    199
    в терминале шела пишеш:
    и радуешься
     
    _________________________
  12. BOSS

    BOSS Member

    Joined:
    15 Jun 2010
    Messages:
    86
    Likes Received:
    5
    Reputations:
    0

    Оказалось, что скрипт все-таки выключается через 999 секунд работы. Получается на скрипты, запущенные из консоли тоже ставится ограничение?
     
    #12 BOSS, 8 Dec 2013
    Last edited: 9 Dec 2013
  13. ashleyco

    ashleyco New Member

    Joined:
    9 Dec 2013
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
  14. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    http://php.net/manual/ru/function.set-time-limit.php
     
    _________________________