読者です 読者をやめる 読者になる 読者になる

Symfony1.4でバッチ処理

symfony1.4

Symfony1.1使いがまず躓くのがこのバッチ処理。1.4ではtaskという仕組みを使う。

taskの作成

# symfony generate:task task_name

これでlib/task配下にtask_nameTask.class.phpというようなファイルが出来る。

タスクファイルの編集

# php lib/task/task_nameTask.class.php

みたいなことをやっても当たり前だが動かない。

Fatal error: Class 'sfBaseTask' not found in /home/xxxx/lib/task/task_nameTask.class.php on line 4

継承が出来ませんよーんと怒られる。タスクプログラムの実行はやはりsymfonyコマンドで行う。その前にtaskファイルを編集。

lib/task/task_nameTask.class.php

$this->namespace = 'batch';

$this->namespaceのところがデフォルトでは空になっているので、ここに"batch"とかく。まあ嫌なら任意の名前でもOK。

タスクの実行

あとは実行するだけ。

# symfony batch:task_name

これでtaskクラスのexecuteメソッドが実行される。"batch"は$this->namespaceが、"task_name"は$this->nameがそれぞれ入る。
cronに登録する場合も"symfony batch:task_name"を登録すればよさそう(未検証)。慣れると便利ですねこれ。