Movable Type/第17回MTプラグイン勉強会 - MT-Task、MT-TaskMgrによるタスク管理 http://www.ark-web.jp/sandbox/wiki/2087.html
Movable Type/第17回MTプラグイン勉強会 - MT-Task、MT-TaskMgrによるタスク管理
第17回はMT::Task、MT::TaskMgrクラスのリファレンスを読み、MTでのタスク管理の方法についてとりあげたいと思います。
その他のネタ
動画(Ustream) †
勉強会の模様をアップしました。
Ustreamのチャンネルはこちら。
http://www.ustream.tv/channel/mt%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E5%8B%89%E5%BC%B7%E4%BC%9A
MT::Task †
Movable Type オブジェクト・リファレンス - MT::Taskより、
MT::Taskオブジェクトは、MTが実行可能なタスクを定義するために用います。基本オブジェクトでは、すべてのタスクの共通の特性と、呼び出しのためのメソッドを定義しています。通常、プラグインはMT::Taskオブジェクトを生成し、MTクラスのadd_taskメソッドに渡します。
つまり、MTに実行させるタスクを表現するオブジェクト。
package MyPlugin; MT->add_task(new MT::Task({ name => "My Task", key => "Task001", frequency => 3600, # at most, once per hour code => \&runner }));
のように使う。
MT::Task->new(\%params) - コンストラクタ †
指定可能なパラメータ(%paramsのkey)はMovable Type オブジェクト・リファレンス - MT::Taskより、
key タスクを識別する一意な文字列を指定します。タスクのセッション・レコードを管理するために用いられます。タスクのセッション・レコードは、最後にタスクが実行された時間を記録するものです。セッション・レコードは、kindカラムの値が"PT"(periodic taskの略)に設定されたレコードとして、mt_sessionテーブルに保存されます。 name タスク名です。これはオプションですが、タスクが失敗したときのエラー・ログ・レコードを記録する際に用いられるものです。 frequency frequency(頻度)には、時間を秒数で指定します。どのような間隔でタスクを実行するかを定義するものです。ただし、ここで指定した頻度でタスクが実行される保証はありません。指定した期間内に2回以上実行されることがないことを保証するだけです。 code MT::TaskMgrがそのタスクを呼び出すときに実行されるコードを、コード・リファレンスとして指定します。ここで指定したコードには、パラメーターとしてMT::Taskインスタンスが渡されます。
$task->init †
MT::Taskインスタンスの初期化コード。
MT::Task->initは空のメソッドであるため、
サブクラスでオーバーライドして利用するものと見込まれる。
$task->run †
タスクが実行する時に呼ばれるメソッド。
当該MT::Taskオブジェクトを引数にして、コンストラクタのcodeで指定されたコードを呼び出す。
$task->key([$key])、$task->name([$name])、$task->frequency([$frequency]) †
プロパティkey、name、frequencyのゲッター、セッター
MT::TaskMgr †
Movable Type オブジェクト・リファレンス - MT::TaskMgrより、
MT::TaskMgrは、複数のタスク(MT::Taskオブジェクトとして個々に宣言されたもの)を実行するためのシンプルなフレームワークを定義します。各タスクは、定義された頻度で実行されます。失敗したタスクは、ログにその旨が書き込まれます。
つまり、MTのタスク実行、管理を表現するクラス。
# タスク(MT::Task)を登録して MT::TaskMgr->add_task($task); # 実行する MT::TaskMgr->run_tasks;
のように使う(要検証。特にadd_task)。
タスクを実行するタイミング †
Scheduled Tasks | MovableType.org - Home of the MT Communityより、
Tasks are run via one of two ways: * through the use of the run-periodic-tasks.pl framework * through the web interface
cron等のシステムが提供するスケジューラーが利用できる場合は前者を、そうでない場合は後者を利用します。後者は、管理画面へのアクセスをトリガーにしてタスク実行するので、たとえば、システムのActivity FeedをGoogle Readerに登録するなどで、タスクの安定した実行を試みることができます(とはいうものの当然cron等に比べて不安定であり、定期実行を保証するものにはなりえませんが)。
利用例 †
コールバック:PeriodicTask †
次回予定 †
tag: Movable Type、MT、MTPlugin、勉強会