&pgid();
 
 #contents
 
 第17回は[[MT::Task>http://www.movabletype.org/documentation/man/MT/Task.html]]、[[MT::TaskMgr>http://www.movabletype.org/documentation/man/MT/TaskMgr.html]]クラスのリファレンスを読み、MTでのタスク管理の方法についてとりあげたいと思います。
 
 その他のネタ
 - [[Scheduled Tasks | MovableType.org - Home of the MT Community>http://www.movabletype.org/documentation/developer/scheduled-tasks.html]]
 
 ** 動画(Ustream) [#h078a3d2]
 
 // 勉強会の模様をアップしました。
 勉強会の模様をアップしました。
 
 // #htmlinsert(study/mtplugin-15.html)
 #htmlinsert(study/mtplugin-17.html)
 
 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 [#f32bd2dc]
 
 - [[MT::Task>http://www.movabletype.org/documentation/man/MT/Task.html]]
 - [[Movable Type オブジェクト・リファレンス - MT::Task>http://www.sixapart.jp/movabletype/manual/object_reference/archives/mt_task.html]]
 
 [[Movable Type オブジェクト・リファレンス - MT::Task>http://www.sixapart.jp/movabletype/manual/object_reference/archives/mt_task.html]]より、
 
  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) - コンストラクタ [#z3d9d9bb]
 
 指定可能なパラメータ(%paramsのkey)は[[Movable Type オブジェクト・リファレンス - MT::Task>http://www.sixapart.jp/movabletype/manual/object_reference/archives/mt_task.html]]より、
 
  key
  
      タスクを識別する一意な文字列を指定します。タスクのセッション・レコードを管理するために用いられます。タスクのセッション・レコードは、最後にタスクが実行された時間を記録するものです。セッション・レコードは、kindカラムの値が"PT"(periodic taskの略)に設定されたレコードとして、mt_sessionテーブルに保存されます。
  
  name
  
      タスク名です。これはオプションですが、タスクが失敗したときのエラー・ログ・レコードを記録する際に用いられるものです。
  
  frequency
  
      frequency(頻度)には、時間を秒数で指定します。どのような間隔でタスクを実行するかを定義するものです。ただし、ここで指定した頻度でタスクが実行される保証はありません。指定した期間内に2回以上実行されることがないことを保証するだけです。
  
  code
  
      MT::TaskMgrがそのタスクを呼び出すときに実行されるコードを、コード・リファレンスとして指定します。ここで指定したコードには、パラメーターとしてMT::Taskインスタンスが渡されます。
 
 *** $task->init [#a77b508d]
 
 MT::Taskインスタンスの初期化コード。
 MT::Task->initは空のメソッドであるため、
 サブクラスでオーバーライドして利用するものと見込まれる。
 
 *** $task->run [#ra3d6c7e]
 
 タスクが実行する時に呼ばれるメソッド。
 当該MT::Taskオブジェクトを引数にして、コンストラクタのcodeで指定されたコードを呼び出す。
 
 *** $task->key([$key])、$task->name([$name])、$task->frequency([$frequency]) [#ld6f1a82]
 
 プロパティkey、name、frequencyのゲッター、セッター
 
 ** MT::TaskMgr [#wc9b1b74]
 
 - [[MT::TaskMgr>http://www.movabletype.org/documentation/man/MT/TaskMgr.html]]
 - [[Movable Type オブジェクト・リファレンス - MT::TaskMgr>http://www.sixapart.jp/movabletype/manual/object_reference/archives/mt_taskmgr.html]]
 
 [[Movable Type オブジェクト・リファレンス - MT::TaskMgr>http://www.sixapart.jp/movabletype/manual/object_reference/archives/mt_taskmgr.html]]より、
 
  MT::TaskMgrは、複数のタスク(MT::Taskオブジェクトとして個々に宣言されたもの)を実行するためのシンプルなフレームワークを定義します。各タスクは、定義された頻度で実行されます。失敗したタスクは、ログにその旨が書き込まれます。
 
 つまり、MTのタスク実行、管理を表現するクラス。
 
     # タスク(MT::Task)を登録して
     MT::TaskMgr->add_task($task);
     # 実行する
     MT::TaskMgr->run_tasks;
 
 のように使う(要検証。特にadd_task)。
 
 *** タスクを実行するタイミング [#v174b778]
 
 [[Scheduled Tasks | MovableType.org - Home of the MT Community>http://www.movabletype.org/documentation/developer/scheduled-tasks.html]]より、
 
  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等に比べて不安定であり、定期実行を保証するものにはなりえませんが)。
 
  
 
 
 
 
 ** 利用例 [#va05524d]
 
 
 *** コールバック:PeriodicTask [#fb143c0d]
 
 
 
 ** 次回予定 [#p808950f]
 
 #blikifooter(進地);
 
 tag: [[Movable Type>tag/Movable Type]]、[[MT>tag/MT]]、[[MTPlugin>tag/MTPlugin]]、[[勉強会>tag/勉強会]]

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

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