PowerCMS™

PowerCMS ブログ

ホーム > PowerCMS ブログ > 開発者だけが知っている PowerCMS の隠し機能 その5 〜run-tasks で特定のタスクを…

2018年05月31日

開発者だけが知っている PowerCMS の隠し機能 その5 〜run-tasks で特定のタスクを除外する 〜

※ 本記事の内容は、PowerCMS 5 でのみ動作します

PowerCMS には tools ディレクトリ内に複数のコマンドラインツールが同梱されていますが、中でも特定のタスクを指定して実行することができる run-tasks は頻繁にご利用いただいており、弊社での制作においても必ずといっていいほど使われています。

しかし、特定のタスクを指定することができるこのツールですが、指定しなかったタスクは実行しなくてよいわけでもなく、必然的に run-periodic-tasks と併用することになります。例えば、

  • 15 分おきに run-tasks
  • 1 時間おきに run-periodic-tasks

といったような cron 設定をすることになります。この場合、タイミングによっては run-tasks での指定タスクと run-periodic-tasks で実行されるタスクが重複することになってしまい、処理に無駄が発生します。この2つだけなら

  • 毎時 15 分 / 30 分 / 45 分に run-tasks
  • 毎時 0 分に run-periodic-tasks

といった設定も可能ですが、run-tasks での特定タスク実行が増えてきたりすると設定が複雑化することもあります。

こういった状況への対応のため、PowerCMS 5 から、run-tasks では exclude オプションによる除外設定ができるようになりました。

cd $MT_HOME
perl ./tools/run-tasks -exclude=FuturePost,FutureRevision

上記の場合、日時指定公開と日時指定によるリビジョンの差し替えについて除外し、それ以外のタスクを実行することが可能です。日時指定公開と日時指定によるリビジョンの差し替えについてはより頻繁に実施し、それ以外のタスクについては間隔を長めに確保する、といったことができるようになりました。

  • 15 分おきに perl ./tools/run-tasks -tasks=FuturePost,FutureRevision
  • 毎時 0 分に perl ./tools/run-tasks -exclude=FuturePost,FutureRevision

また、run-tasks ではジョブキューを消化しませんので、run-workers-daemon を併用するのがよいでしょう。こちらについては以下の記事をご参照ください。

▼ PowerCMS 4 のタスクとワーカー(run-workers-daemon)
https://www.powercms.jp/blog/2014/01/run-workers-daemon.html

運用状況に合わせてぜひご活用ください。


カテゴリー
PowerCMS 5
サイト制作全般
技術情報