2012-06-26 5 views
4

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

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

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

ответ

9

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

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

screen php /path/to/myphpscript.php 

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

screen -r 

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

+0

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

3

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

Что-то, как это будет работать:

nohup php myscript.php

+0

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

+0

'ps a' показывает только процессы текущего сеанса. Посмотрите наверху. –

+0

Это тоже работает. Спасибо! Есть ли способ узнать, работает ли предыдущий сеанс в новом сеансе? – musicliftsme

1

Вы можете создать хрон для запуска PHP скрипт периодически на основе списка задач времени. More info. Вы также можете запустить задачу в фоновом режиме с консоли. то есть php-cgi script.php& это сделало бы скрипт фоновой задачей

1

Посмотрите на GNU Screen; он позволяет вам отсоединить и повторно подключить сеанс позже, что идеально подходит для длительных сценариев. Cron - хороший вариант, если вы хотите, чтобы это произошло повторяющимся образом; одноразовые пакетные задания могут быть запланированы с чем-то вроде at. Для более интенсивных вычислительных потребностей вам может понадобиться более полнофункциональная система планирования заданий, например TORQUE.

0

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

php ./yourscript.php & 
+1

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

+0

Вы совершенно правы. Виноват. –

Смежные вопросы