Запуск команды Laravel Artisan как новый процесс

Так в общем можно сказать exec('MyCommand &> /dev/null &') в php и MyCommand будет выполняться как отдельный процесс, так что ваше основное выполнение php может продолжаться по-своему.

Как ни странно, если вы попытаетесь сделать это с помощью Laravel’s Artisanчто-то идет в сторону. Например, exec('php artisan command &> /dev/null &') результаты, что удивительно, в процессе все еще просто зависают, пока команда ремесленника не закончит. Если вы поместите команду ремесленника в скрипт bash, она не будет выполнена вообще.

Почему это так, и как я могу выполнить ремесленную команду в новом отдельном процессе?

0

Решение

Вам нужно будет создать новый процесс для его запуска:

$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";
}
1

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

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

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector