PHP запустить в фоновом режиме и выйти, когда закончите - PullRequest
0 голосов
/ 02 января 2012

$escaped_check = escapeshellcmd("/usr/bin/php -f /opt/status/check.php " . $_SERVER['REMOTE_ADDR'] . " >> /dev/null 2>&1 &"); shell_exec($escaped_check);

Я пытаюсь выполнить вышеуказанный код в фоновом режиме ради неблокирующего потока, но я не уверен, как выйти из check.php, когда работа завершена.

Ответы [ 2 ]

1 голос
/ 02 января 2012

вы можете открыть вместо shell_exec.

Затем вы можете прекратить его с помощью proc_terminate

Или вы можете получить идентификатор процесса, вызвав proc_get_status.

С помощью PID вы также можете завершить процесс.

Надеюсь, это поможет.

0 голосов
/ 28 марта 2014

PHP-скрипт (ваш check.php) должен быть автоматически завершен после его завершения в фоновом режиме. Вероятно, вы можете попробовать использовать exit () или die () в конце сценария PHP (ваш check.php), чтобы убедиться, что сценарий выпадает.

Вы также можете использовать следующую команду, чтобы получить $ pid. Например, 23456. «Эхо $!» часть отправляет идентификатор процесса.

$pid = shell_exec('php /path/to/script/cli_test.php argument1 > /dev/null 2>&1 & echo $!') 

А затем в терминале используйте команду ps, чтобы проверить, работает ли он в фоновом режиме.

ps 23456
...