Как запустить команду в Yii2 из его же контроллера
Через консоль я запуская команду так
php yii prepare-file/run 7777.txt
она запускается и скрипт обрабатывает переданный через параметр файл 7777.txt.
Но сейчас мне нужно запустить эту команду из экшена контроллера. Что передать в exec();
Пробовал так
exec("php yii prepare-file/run " . $file_name . " >/dev/null &");
не работает
Ответы (2 шт):
Автор решения: Serghei Leonenco
→ Ссылка
Вы можете попробовать этим способом:
# Для начала войдите в нужную дирректорию:
chdir($strPath);// Рут директория
# Теперь запустите nohup, направленную в dev/null, и критически важно со знаком & в конце, чтобы запустилось async:
$output = shell_exec("nohup php yii prepare-file/run " . $file_name . " > /dev/null &");
Еще несколько способов с созданием console контроллеров и actions вы можете подсмотреть вот тут
Автор решения: Walkboy
→ Ссылка
Попробуйте https://github.com/toriphes/yii2-console-runner
Устанавливаем
composer require toriphes/yii2-console-runner "*"Добавляем в конфиг
//you config file
'components' => [
...
'consoleRunner' => [
'class' => 'toriphes\console\Runner'
]
...
]
- Запускаем свои команды так:
//some application file
$output = '';
Yii::$app->consoleRunner->run('controller/action param1 param2 ...', $output);
echo $output; //prints the command output