Я много искал, чтобы найти точный ответ, но не нашел.
многие люди упомянули, что мы должны и в конце команды не ждать ответа.
например, для запуска bg.php в фоновом режиме, это было рекомендовано:
exec("/usr/bin/php bg.php &");
но это не работает для меня. и главный скрипт ждет полного выполнения bg.php .
Я также где-то читал запись вывода bg.php в файле журнала, но мой фоновый скрипт не выводит никакого вывода. Он выполняет некоторый процесс, а затем записывает что-то в базу данных.
Я просто хочу, чтобы мой скрипт запускал bg.php и не дождался его окончания.
пожалуйста, помогите мне, включая правильный код.
Вы также должны перенаправить выходные программы, обычно / dev / null
exec($cmd . " > /dev/null &");
Вы рассматривали использование экрана? Вы можете запустить сеанс экрана, который выполняется в отдельном процессе.
screen -d -m -S my_bg_session /usr/bin/php bg.php
Затем вы можете подключиться к нему позже, если он все еще запущен:
screen -r my_bg_session