ConsoleApplicationの設定
Yiiでcronなどのコマンドから処理を行いたい時の流れです。
1.エントリスクリプト作成
protected/以下のどこかにエントリスクリプトを作成します。
※今回はprotected/bin/test.phpとします。
path/to、読み込むconfigファイルは適時修正が必要です。
<?php defined('YII_DEBUG') or define('YII_DEBUG',true); require_once('path/to/yii/framework/yii.php'); $config= 'path/to/config/main.php'; $app = Yii::createConsoleApplication($config); $app->run();
2.コマンドクラス作成
protected/commands/の下にコマンドクラスを作成します。
これはCConsoleCommandクラスを継承したものを用意します。
runの中で実際の処理を記述していきます。
<?php class testCommand extends CConsoleCommand { public function run( $args ) { echo('sample'."\n"); } }
注意事項としてはファイル名の末尾がCommandになっていること。
これがないとCommandクラスと認識してくれません。
3.コマンドからたたく
エントリスクリプトをphpで実行。その時にコマンドクラス名を指定します。
$ php ./protected/bin/test.php test sample
sampleと表示されれば正常に処理が出来てます。
あとはCommandクラスのrunの中で必要に応じて処理を追記するだけです。
これでYiiでバッチ処理やコマンドからたたくなどが出来ます。
参考URL
choco & moca Yiiのcron jobの作成法
http://chocomoca9.blog40.fc2.com/blog-entry-38.html
コンソールアプリケーション Yii Framework触るぜ日記(6)