Вопрос по linux, php, amazon-ec2, cron – Запуск PHP-скрипта полностью на стороне сервера

4

У меня проблема с тем, что шпаклевка регулярно отключается. Поэтому, когда я запускаю PHP-скрипт из терминала, он всегда прерывается. Предполагается, что сценарий будет работать несколько часов, поэтому мне не повезло с ним.

Как я могу полностью запустить это со стороны сервера? Я читаю о работе cron, но сейчас мне трудно понять. Есть ли альтернатива cron для того, что мне нужно?

У меня есть несколько скриптов PHP-файлов, которые нужно запускать, по одному или, возможно, по два за раз. Есть идеи?

Ваш Ответ

5   ответов
0

Вы можете запустить свою программу в фоновом режиме

php ./yourscript.php &
Фоновый процесс не позволяет ему пережить завершение сеанса.
9

Вам не нужно оставлять его запущенным в задании cron - вы можете просто запустить скрипт php внутри экрана.

Просто введите;

screen php /path/to/myphpscript.php

Экран продолжит работу даже после отключения от PuTTY. Если вам нужно проверить это, вы можете использовать;

screen -r

Чтобы заново присоединиться к этому процессу и просмотреть любой вывод.

Это хорошо работает. Я сделал: 1:screen чтобы попасть на экран. 2:php my_scripy.php запустить скрипт. 3: с этого момента я могу подключиться или отсоединиться от экрана, и сценарий продолжается до его завершения. musicliftsme
1

Взгляни наЭкран GNU; Позволяет отсоединить и заново подключить сеанс позже, что идеально подходит для длительных сценариев. Cron - хороший вариант, если вы хотите, чтобы это происходило регулярно; одноразовые пакетные задания могут быть запланированы с чем-то вродев, Для более интенсивных вычислительных потребностей, вы можете захотеть взглянуть на более полноценную систему планирования работы, такую какМОМЕНТ.

3

Вы должны предотвратить завершение процесса, когда сеанс отключается.

Примерно так будет работать:

nohup php myscript.php

Махмуд, я пытаюсь это прямо сейчас. После запуска этой команды, закрытия замазки и повторного подключения я не вижу процесса, когда набираюps a, Это нормально? musicliftsme
ps a показывает только текущие процессы сеанса. Посмотри наверх.
Это работает также. Спасибо! Есть ли способ узнать, запущен ли процесс предыдущего сеанса в новом сеансе? musicliftsme
Я думаюps a показывает процесс экрана в любом сеансе. Это будет работать для меня. musicliftsme
1

Вы можете создать задание cron для периодического запуска php-скрипта на основе списка временных задач.Больше информации, Вы также можете запустить задачу в фоновом режиме из консоли. то естьphp-cgi script.php& это сделало бы скрипт фоновой задачей

Похожие вопросы