linux — PHP shel_exec не работает в фоновом режиме

В Интернете я нашел много информации о запуске php-кода в фоновом режиме, но я не могу воссоздать сценарий на моей машине.
Вот мой код:

//call.php
function run_background()
{
$PID = shell_exec("nohup php teste.php &");
return $PID;
}

function checking_process($pid)
{
exec("ps $pid", $state);
return (count($state) >= 2);
}

$ps = run_background();
copy("yel", "temp/yel2");

Когда вы запускаете файл call.php, страница загружается до запуска файла test.php. Это файл для тестирования:

//test.php
for($i=1; $i<=5; $i++)
{
sleep(1);
}
copy("yel", "temp/yel");

В обоих файлах я использую функцию копирования, чтобы проверить время выполнения действий. На данный момент я ожидаю, что, поскольку файл test.php на этом фоне и занимает не менее 5 секунд, поток файла call.php должен возникать независимо, но файл ‘yel2’ создается только после файла ‘yel’.
Тем не менее, функция на самом деле не работает в фоновом режиме, что ошибка делает?

Примечание: я использую Manjaro Linux 64bit, PHP 5.5 и Apache 2.4

Примечание 2: $ PID, возвращенный из функции run_background, действителен, я могу ясно найти его с помощью команды ‘ps aux’

2

Решение

Вместо того, чтобы просто добавить & в конце попробуйте добавить >& /dev/null & это то, с чем я имел успех. Так что в конечном итоге что-то вроде этого:

$PID = shell_exec("nohup php teste.php >& /dev/null &");
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]