@gtreshchev

Как поставить на обработку PHP скрипт в течение нескольких дней?

Нужно, чтобы скрипт работал 3-4 дня. Но работает он только пока идет запрос к серверу. Можно ли как-то на Debian сервере поставить обработку скрипта, пока скрипт сам не закончит работу?
  • Вопрос задан
  • 174 просмотра
Пригласить эксперта
Ответы на вопрос 5
kawabanga
@kawabanga
Бью себя по рукам за каждый ответ на глупый вопрос
запустите консольно.

Другое дело, есть ли необходимость в 3-4 днях аптайма? Разделите задачу, выставьте cron.
Ответ написан
Комментировать
KevlarBeaver
@KevlarBeaver
Разработчик
Но работает он только пока идет запрос к серверу.

Это ключевой момент. При чём тут вообще сервер? Нужно из консоли вызвать его типа
php my_script.php
А если нужно, чтобы он не блокировал консоль, то как-то так:
nohup php my_script.php &
А вот тут можно почитать подробнее: https://secure.php.net/manual/ru/features.commandl...
Ответ написан
Akdmeh
@Akdmeh
PHP, Yii2, Music
Если не будет проблемы утечки памяти (сам PHP не течет по моему опыту на тех задачах, что я запускал, но можно написать плохой цикл, в котором не будет все очищатся), то очень помогает приложение screen (обычно нужно его установить через sudo apt-get install screen).
В чем прикол. Ты вводишь screen, и... ничего вроде бы не происходит.
Но! Ты вводишь коменду, которую нужно исполнить и затем при необходимости нажимаешь Ctrl+a и затем D (если не ошибаюсь) и ты оставляешь задачу работать в бэкграунде сервера, а затем в любой момент можно к этой задаче вернуться через screen -r
Там даже есть возможность создавать виртуальные несколько вкладок (Ctrl+a и кнопка c), а затем переключаться между ними через Ctrl+a и пробел.
Когда мне нужно было запускать 3-5 скриптов, которые работали длительное время, это было огромным облегчением. Сначала было до жути непривычно и непонятно, но как разобрался - очень оценил преимущества этой команды. Всегда можно было зайти и проверить быстро, как работают скрипты и затем отсоединиться, оставив их работать в фоне.
Адресую вас погуглить подробнее "linux screen", в частности вот статья:
https://linuxize.com/post/how-to-use-linux-screen/
https://vps.ua/wiki/beginners/screen/
Ответ написан
Комментировать
@procode
Разработчик
Логинишься через ssh и как написал Михаил:

nohup php my_script.php &

тогда у тебя процесс со скриптом не прервется даже если ты закроешь окно терминала.

Правда потом тебе его придется прибить вручную))) но это уже гугл в помощь или отдельной темой здесь же))
Ответ написан
Комментировать
@akdes
не смотря на (возможно) нецелесообразность идеи, можно вызывать "child process", который уже не будет зависеть от сессии и запроса
php.net/manual/ru/function.pcntl-fork.php
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы