スケジュールタスク

プラグインでスケジュールタスクを設定する

MTディレクトリ配下//tools/run-periodic-tasksを実行することでタスクを実行する
時間を指定しておけば、"run-periodic-tasks"を何度実行してもプラグインで設定した時間の間隔で動作する

2分単位にログ出力するサンプル

構成

$MT_DIR/
|__ plugins/
|  |__ TaskTest01/
|     |__ config.yaml
|     |__ lib/                    
|     |  |__ TaskTest01
|     |      |__ L10N
|     |      |   |__ ja.pm
|     |      |   |__ en_us.pm
|     |      |__ Tasks.pm
 
 

ソース

config.yaml

# プラグイン情報
id: TaskTest01
key: TaskTest01
name: TaskTest01
version: 1.0
description: <__trans phrase="_PLUGIN_DESCRIPTION">
author_name: <__trans phrase="_PLUGIN_AUTHOR">
author_link: http://www.example.com/about/
doc_link: http://www.example.com/docs/
 
# 言語対応
l10n_class: TaskTest01::L10N
 
# タスク
tasks:
    MyCustomTask01:
        label: タスクテスト1
        frequency: 120
        code: $TaskTest01::TaskTest01::Tasks::do_task
 
 

lib/TaskTest01/Tasks.pm

package TaskTest01::Tasks;
 
use strict;
 
sub do_task {
    doLog("run scheduled tasks");
}
 
sub doLog {
    my ($msg, $class) = @_;
    return unless defined($msg);
 
    require MT::Log;
    my $log = new MT::Log;
    $log->message($msg);
    $log->level(MT::Log::DEBUG());
    $log->class($class) if $class;
    $log->save or die $log->errstr;
}
 
1;
 
 

確認

Linuxで"run-periodic-tasks"を実行

# cd /home/httpd/cgi-bin/mt
# sudo -u apache ./tools/run-periodic-tasks
#
 

ログを確認


2分後にもう一度実行

# cd /home/httpd/cgi-bin/mt
# sudo -u apache ./tools/run-periodic-tasks
# sudo -u apache ./tools/run-periodic-tasks
#
 

ログを確認





最終更新:2012年03月11日 11:54