PHP exec () не хранит идентификатор процесса

0

У меня есть PHP-программа, которая запускает процесс в фоновом режиме с помощью exec() (вывод процесса отправляется в /dev/null). Затем я использую exec("echo $!", $processes[0]) потому что я хочу сохранить идентификатор процесса, чтобы впоследствии его завершить. Однако результатом $processes[0] является пустой массив.

Почему идентификатор процесса не сохраняется? Обратите внимание, что идентификатор процесса выводится правильно, если я выполняю фоновый процесс, а затем запускаю echo $! от терминала. Еще одно замечание: я использую Raspberry Pi, который основан на Linux.

  • 2
    Второй exec() запускает новый процесс оболочки, который не знает о предыдущих $! ,
Теги:
exec
process

1 ответ

3
Лучший ответ

Чтобы записать идентификатор процесса, вы должны установить его в переменную. Например, чтобы запустить другой PHP-скрипт в фоновом режиме:

$pid = exec("php mysbackgroundscript.php >/dev/null 2>&1 & echo $!");

Затем переменная $ pid должна содержать PID.

  • 0
    Работает отлично. Спасибо за пример.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню