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::TaskMT::TaskMgrクラスのリファレンスを読み、MTでのタスク管理の方法についてとりあげたいと思います。

その他のネタ

[edit]

動画(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

[edit]

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
   }));

のように使う。

[edit]

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インスタンスが渡されます。
[edit]

$task->init

MT::Taskインスタンスの初期化コード。
MT::Task->initは空のメソッドであるため、
サブクラスでオーバーライドして利用するものと見込まれる。

[edit]

$task->run

タスクが実行する時に呼ばれるメソッド。
当該MT::Taskオブジェクトを引数にして、コンストラクタのcodeで指定されたコードを呼び出す。

[edit]

$task->key([$key])、$task->name([$name])、$task->frequency([$frequency])

プロパティkey、name、frequencyのゲッター、セッター

[edit]

MT::TaskMgr

Movable Type オブジェクト・リファレンス - MT::TaskMgrより、

MT::TaskMgrは、複数のタスク(MT::Taskオブジェクトとして個々に宣言されたもの)を実行するためのシンプルなフレームワークを定義します。各タスクは、定義された頻度で実行されます。失敗したタスクは、ログにその旨が書き込まれます。

つまり、MTのタスク実行、管理を表現するクラス。

   # タスク(MT::Task)を登録して
   MT::TaskMgr->add_task($task);
   # 実行する
   MT::TaskMgr->run_tasks;

のように使う(要検証。特にadd_task)。

[edit]

タスクを実行するタイミング

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等に比べて不安定であり、定期実行を保証するものにはなりえませんが)。

[edit]

利用例

[edit]

コールバック:PeriodicTask

[edit]

次回予定

投稿者進地 | パーマリンク

| append.gif

tag: Movable TypeMTMTPlugin勉強会


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2008-09-25 (木) 16:24:38 (5695d)

アークウェブのサービスやソリューションはこちら