фоновый процесс php с использованием функции exec

Я много искал, чтобы найти точный ответ, но не нашел.

многие люди упоминали, что мы должны & в конце команды, чтобы не ждать ответа.
например, чтобы запустить bg.php в фоновом режиме, это было рекомендовано:

exec("/usr/bin/php bg.php &");  

но у меня это не работает. а основной сценарий ожидает полного выполнения bg.php.

Я также где-то читал, чтобы записать вывод bg.php в файл журнала, но мой фоновый скрипт не производит никакого вывода. Он выполняет какой-то процесс, а затем что-то записывает в базу данных.

Я просто хочу, чтобы мой скрипт запускал bg.php и не ждал его завершения.

пожалуйста, помогите мне, включая правильный код.


person Aliweb    schedule 11.10.2012    source источник


Ответы (2)


Вы также должны перенаправить вывод программ куда-нибудь, обычно в / dev / null

exec($cmd . " > /dev/null &");
person ninaj    schedule 11.10.2012
comment
работает отлично! но что такое каталог / dev / null? записывает ли эта команда вывод в файл? - person Aliweb; 11.10.2012
comment
/ dev / null просто отбрасывает отправленные ему данные, вы можете в качестве альтернативы перенаправить его в какой-либо файл, если вам нужен вывод программы - person ninaj; 11.10.2012

Вы рассматривали возможность использования экрана? Вы можете запустить сеанс экрана, который выполняется в отдельном процессе.

screen -d -m -S my_bg_session /usr/bin/php bg.php

Затем вы можете подключиться к нему позже, если он все еще работает:

screen -r my_bg_session
person moodboom    schedule 11.10.2015