2013-09-09 3 views
-3

Мне нужно продолжать работать с PHP-скриптом, но у меня есть проблема, в настоящее время я использую putty для входа на сервер, а затем выполняю PHP-код. Когда я закрываю сеанс замазки, скрипт останавливает выполнение.Запуск PHP-скрипта

Шаги:

  1. Войти на сервер с замазкой
  2. работает PHP скрипт, например) PHP файла

, но когда я закрыть шпатлевка сессии Эта программа будет очевидной. Закрытия Мне нужно постоянно запускать программу на сервере, независимо от закрытия шпатлевки, и любой, кто войдет на сервер, может остановить ее и запустить снова как процесс. Как запустить php-скрипт, не зависящий от сеанса шпатлевки, который может контролироваться любым пользователем на сервере?

+1

Подробнее о 'Cron jobs' http://net.tutsplus.com/tutorials/php/managing-cron-jobs-with-php-2/ –

+0

Задача cron не будет полезна, так как она должна указать время для запуская его, но мой скрипт должен быть запущен для обработки ввода, когда он входит. – thuk

+0

Задачи @MoeedFarooqui cron предназначены для автоматического выполнения скрипта с заданным интервалом. Они не имеют ничего общего со сценарием, выходящим преждевременно. –

ответ

1

Я не уверен, что ваш вопрос действительно в сфере программирования, это больше UNIX/Linux конкретный вопрос «Как запустить программу из оболочки, которая не закрывается, когда я закрываю терминал ». PHP - это та программа.

Вы можете сделать php -f scriptname.php > /dev/null 2>/dev/null & disown.

STDOUT и STDERR будут перенаправлены на/dev/null (или вы можете изменить их на реальные файлы), и ambersand будет разветвлять процесс. Отключение будет удалять текущий PID из сеанса терминала.

+0

как мне закрыть его и запустить его снова, если внесенные изменения? можно ли убить процесс, может быть сделано любым, кто регистрируется на сервере, или это может быть сделано только мной или кто его запустил? – thuk

+0

Чтобы убить его, вам нужен PID, который можно найти с помощью 'ps-A'. Но опять же, это не вопрос программирования. – user221931

+0

Большое спасибо .. – thuk

0

Что вам нужно сделать, это разветвить процесс, прежде чем вы его прекратите. Таким образом, когда вы выйдете из процесса (или закройте ваше ssh-соединение), вторичный процесс продолжит работу.

$pid = pcntl_fork(); 
if ($pid == -1) { 
    die('could not fork'); 
} else if ($pid) { 
    // parent 
    pcntl_wait($status); 
} else { 
    // child 
    // write your code here! 
} 
+0

процессом forking, как мне закрыть его и запустить его снова, если внесенные изменения? можно ли убить процесс, может быть сделано любым, кто регистрируется на сервере, или это может быть сделано только мной или кто его запустил? – thuk