2011-08-10 4 views
1

Можно создать дубликат:
php in background exec() functionНесколько команд PHP Exec

Я пытаюсь запустить два EXEC команды из PHP. Один из них - скрипт, который может работать несколько минут, и может быть только один экземпляр экземпляра. Второй exec просто проверяет, запущен ли первый процесс, и позволяет вам снова запустить его или перенаправить. Код выглядит примерно так.

Это главный процесс

$command = '/home/user/active/Nem-Swd.elf 30 > /dev/null 2>&1 & echo $!'; 

Это процесс, который проверяет, является ли другой уже запущен.

exec("ps ax | grep $name 2>&1", $output); 

Я знаю, что в PHP API он говорит:

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

Но я не понимаю, что это подразумевает.

+0

Что означает, что вам нужно перенаправить вывод в файл (текстовый файл, xml-файл и т. Д.), Чтобы оператор exec продолжал работать после выхода программы PHP. – Kyle

+0

нет, отличается, – ajreal

ответ

1

Это означает, что если вы запустите команду exec без повторной маршрутизации своего вывода, ваш текущий PHP-скрипт будет ждать завершения этой команды до завершения сценария. Так как вы маршрутизируете выход на стандартную версию, я считаю, что вы должны быть в порядке. Если вы только что запустили exec($commandJob), вы столкнулись бы с этой проблемой.


Кажется, что этот вопрос уже был дан ответ:
php in background exec() function

как минимум (например), вы должны сделать это, чтобы заставить ее работать в фоновом режиме:
exec("php test.php &");


Есть и другие способы запуска процессов, которые могут быть полезны для изучения: http://www.php.net/manual/en/book.pcntl.php
http://php.net/manual/en/function.popen.php

+0

Почему он все еще ждет завершения первого процесса? – vman

+0

, поэтому вы запускаете два execs подряд, но второй никогда не запускается? – afuzzyllama

+0

Второй работает только тогда, когда первый завершен. – vman

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