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 インポート |
CustomObjectTasks | カスタム項目の指定日時公開/非公開の処理 |
※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 のタスク・スケジューラを利用したスケジュールタスクの実行については、下記のドキュメントを参考にしてください。
お問い合わせください
上記オプションで指定できない処理をタスク、ジョブ化したい場合、またはその他カスタマイズについてはフォームよりお問い合わせください。
- カテゴリー
- PowerCMS 4
- 技術情報
コメントを投稿する