PowerCMS™

PowerCMS ブログ

ホーム > PowerCMS ブログ > PowerCMS 4 のタスクとワーカー

2013年12月18日

PowerCMS 4 のタスクとワーカー

Movable Type では、run-periodic-tasks の実行を行うと、スケジュール・タスクとワーカーによるジョブの処理の両方が行われるため、タスクとワーカーおよびその中でどういった処理が行われているか考慮することなくまとめて実行することができますが、これは例えば、以下のようなデメリットがあります。

  • 毎日 0 時に一回だけ実行したいタスク処理があるが、日時指定公開を行うために 15 分おきにタスクを動作させなければならない
  • 特定のタスクよりも必ず後に実行したいタスクがあるが、タスクには優先度が指定できない
  • 負荷が高かったり、時間がかかる処理を他の処理と分離することができない
  • ファイル操作を伴う処理があるため、権限などの都合で実行するユーザを分けたいが、これができない

PowerCMS 4 では、タスクとワーカーを区別し、かつその中でも細分化して特定のタスクやジョブを処理できるようにすることで、各処理に適した形で実行することができます。

実行を行うスクリプト

タスクおよびワーカーの実行について PowerCMS 4 では以下の3つのスクリプトを利用できます。

tools/run-tasks
run-periodic-tasksのうち、タスクのみを実行するもの。タスクを個別に指定することができます。
tools/run-workers
run-periodic-tasksのうち、ワーカーのみを実行するもの。対象とするジョブを個別に指定することができます。
tools/run-workers-daemon
run-tasks、run-workers が行うワーカーやタスクを常駐プロセスで処理するもの。ディレクトリを監視して変更されたファイルを対象に処理を行ったりすることもできます。

今回は入門編として、run-workers-daemon 以外の二つについて、その使い方をご紹介します。

run-tasks で特定のタスクのみを実行する

以下のように実行することで、記事/ページの指定日時公開処理のみを実行することができます。


$ cd $MT_HOME && perl tools/run-tasks --tasks=FuturePost

複数の処理を指定することもできます。その場合、--tasks の引数にカンマ区切りで複数のタスクを登録します。以下の例 は、記事/ページの指定日時公開処理と、ステージ同期/公開同期処理を実行するものです。


$ cd $MT_HOME && perl tools/run-tasks --tasks=FuturePost,StagingSync

run-periodic-tasks と同様、crontab を利用してスケジュールタスクを定期的に実行するように予約することができます。


0,20,40 * * * * cd $MT_HOME && perl tools/run-tasks --tasks=FuturePost,StagingSync

--tasks に指定できるタスク名(代表的なもの)

FuturePost 記事/ページの指定日時公開処理
EntryUnpublish 記事/ページの指定日時非公開処理(※1)
FutureRevision 日時指定されたリビジョンのアップデート
CleanTemporaryFiles プレビュー時などに発生した一次ファイルの削除
PurgeExpiredSessionRecords 古いセッションレコードの消去
PurgeExpiredDataAPISessionRecords 古いData APIのセッションレコードの消去
StagingSync 日時指定されたステージ環境への同期/公開環境への同期処理
MailPost 携帯からのメール投稿の取り込み処理
EstcmdGather PowerSearchの検索インデックス更新(差分更新)
CheckUpdatePlugins プラグインマネージャによるチェックとアップデート
ImportCSV オプションプラグイン CMSImporter による CSV インポート

※1 PowerCMS では Movable Type の日時指定非公開処理である「UnpublishingPost」は使用しません
※ --tasks オプションは省略可能で、省略時にはすべてのタスクを実行します。

run-workers で特定のジョブのみを処理する

以下のように実行することで、再構築キュー経由の再構築のみを実行することができます。


$ cd $MT_HOME && perl tools/run-workers --jobs=MT::Worker::Publish

複数の処理を指定することもできます。その場合、--jobs の引数にカンマ区切りで複数のワーカーを登録します。以下の例は、再構築キュー経由の再構築と、プラグインマネージャのプラグイン移動(有効なプラグインディレクトリと無効化ディレクトリ間のディレクトリ移動)を実行するものです。


$ cd $MT_HOME && perl tools/run-workers --jobs=MT::Worker::Publish,PluginManager::Worker::SwitchPlugins

--jobs に指定できるジョブ名(代表的なもの)

MT::Worker::Publish 再構築キュー経由の再構築処理
PluginManager::Worker::SwitchPlugins プラグインマネージャのプラグイン移動(有効なプラグインディレクトリと無効化ディレクトリ間のディレクトリ移動)
PluginManager::Worker::UpdatePlugins プラグインマネージャのプラグインアップデート処理

※ --jobs オプションは省略可能で、省略時にはすべてのジョブを処理します。

なお、Windows のタスク・スケジューラを利用したスケジュールタスクの実行については、Movable Typeのドキュメントを参考にしてください。
http://www.movabletype.jp/documentation/schedule_task_framework.html

お問い合わせください

上記オプションで指定できない処理をタスク、ジョブ化したい場合、またはその他カスタマイズについてはフォームよりお問い合わせください


カテゴリー
PowerCMS 4
技術情報