Kohana MinionによるCLIプログラムの作成
Kohana framework 3.3からCLI実行用のMinionモジュールが標準搭載された。オプションの指定などコマンドラインスクリプトを作成するにあたって便利な機能が利用できる。 本記事ではその簡単な使い方を紹介したいと思う。
セットアップ
bootstrap.php
にてMinionモジュールのコメントアウトを外す。
/**
* Enable modules. Modules are referenced by a relative or absolute path.
*/
Kohana::modules(array(
'minion' => MODPATH.'minion', // CLI Tasks
));
タスクの実行方法
コマンドラインから実行すると、ControlerではなくMinionタスクが呼ばれる。
そのためindex.php
の引数にタスク名を指定するだけでよい。
php index.php Mytask
また、タスク実行用のコマンドが用意されているので、PATHさえ通せば以下のように実行できる。
minion Mytask
オプションは--param1=value1
のように指定する。
minion Mytask --file=list.txt
タスクの作成
タスククラスの作成
application/classes/Task
配下にMinion_Task
クラスを継承したクラスを作成する。
メイン処理の記述
実際のタスクは_execute
メソッドをオーバーライドして記述する。
オプションパラメータは$_optionsプロパティにキーとデフォルト値を設定することができる。
protected $_options = array( 'file' => null, 'output' => 'output.txt' ); /** * オレオレタスク * * @param array $params */ protected function _execute(array $params) { $handle = fopen($params['file'], 'r'); while (! feof ($handle)) { $line = trim(fgets($handle, 1024)); if (empty($line)) { continue; } echo "<$line>\n"; } fclose($handle); }
オプションのバリデーション
オプションパラメータはKohanaのValidationを使ってバリデートすることができる。
build_validation
メソッドに記述。
public function build_validation(Validation $validation)
{
return parent::build_validation($validation)
->rule('file', 'not_empty');
}
まとめ
PHPでバッチを書くことは少ないかもしれないが、Kohanaの機能が使えるので、ちょっとした処理をさせたいときには便利。
DBアクセスやAPIコールなど微妙に煩雑になるケースは多いので、自分で実装するよりはよいとは思う。
なお、勝手に業務システムに使っているのは内緒である。