Так в общем можно сказать exec('MyCommand &> /dev/null &')
в php и MyCommand
будет выполняться как отдельный процесс, так что ваше основное выполнение php может продолжаться по-своему.
Как ни странно, если вы попытаетесь сделать это с помощью Laravel’s Artisan
что-то идет в сторону. Например, exec('php artisan command &> /dev/null &')
результаты, что удивительно, в процессе все еще просто зависают, пока команда ремесленника не закончит. Если вы поместите команду ремесленника в скрипт bash, она не будет выполнена вообще.
Почему это так, и как я могу выполнить ремесленную команду в новом отдельном процессе?
Вам нужно будет создать новый процесс для его запуска:
$pid = pcntl_fork();
switch($pid)
{
case -1: // pcntl_fork() failed
die('could not fork');
case 0: // you're in the new (child) process
exec("php artisan command");
// controll goes further down ONLY if exec() fails
echo 'exec() failed';
default: // you're in the main (parent) process in which the script is running
echo "hello";
}
Других решений пока нет …