как из контроллера запустить консольное приложение

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
Аватара пользователя
Ghost_nsk
Сообщения: 825
Зарегистрирован: 2012.01.01, 00:45
Откуда: Новосибирск
Контактная информация:

как из контроллера запустить консольное приложение

Сообщение Ghost_nsk »

есть консольное приложение, лежит стандартно в application.commands.TestCommand
есть контроллер site, как из контроллера запустить TestCommand с целью отладки?
kraut
Сообщения: 27
Зарегистрирован: 2013.07.11, 09:03
Откуда: Москва

Re: как из контроллера запустить консольное приложение

Сообщение kraut »

Можно вот так:

Код: Выделить всё

$sCommandPath = Yii::app()->getBasePath() . DIRECTORY_SEPARATOR . 'commands';
$oRunner = new CConsoleCommandRunner();
$oRunner->addCommands( $sCommandPath );

$aArgs = array( 'yiic', 'command', 'action' );

$oRunner->run( $aArgs );
 
Аватара пользователя
Ghost_nsk
Сообщения: 825
Зарегистрирован: 2012.01.01, 00:45
Откуда: Новосибирск
Контактная информация:

Re: как из контроллера запустить консольное приложение

Сообщение Ghost_nsk »

есть отличия вот от такого метода:

Код: Выделить всё

// пошли тесты
Yii::import('application.commands.*');
$track = new ParceltrackCommand('parcel','nginx');
// пошла отладка
?
kraut
Сообщения: 27
Зарегистрирован: 2013.07.11, 09:03
Откуда: Москва

Re: как из контроллера запустить консольное приложение

Сообщение kraut »

Ну я думаю все зависит от самой команды, и от того насколько нужно получить окружение близкое к реальному запуску из console.
Так например только то что конфиг будет использоваться не консольный а web приложения (если запускать консольное приложение из контроллера) уже отличает окружение отладки от рабочего.

В чем конкретно будут отличия между тем что я предложил, и Вашим вариантом сказать не могу. Возможно отличия будут минимальны, или отсутствовать вовсе.
Ответить