初めてのシステムと日記

システムも日記も初めてです。

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)

http://labo.shimi-zoo.com/post/40