Ответ 1
Вы также должны перенаправить выходные программы, обычно /dev/null
exec($cmd . " > /dev/null &");
Я много искал, чтобы найти точный ответ, но не нашел.
многие люди упомянули, что мы должны & в конце команды не ждать ответа.
например, для запуска bg.php в фоновом режиме, это было рекомендовано:
exec("/usr/bin/php bg.php &");
но это не работает для меня. и главный script ждет полного выполнения bg.php.
Я также где-то читал, чтобы написать bg.php вывод в файле журнала, но мой фон script не выводит никакого вывода. Он выполняет некоторый процесс, а затем записывает что-то в базу данных.
Я просто хочу, чтобы мой script запускал 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