Blog

concrete5の自動実行ジョブでキューが使えるようになりました

Posted by admin at 10:51 日時 2013/10/27

concrete5のバージョン5.6.2.1の日本語版がリリースされました。5.6.2.1の大きなトピックは自動実行ジョブの改善です。主に次のような変更がありました。

  • 「ジョブセット」の概念が導入され、複数の自動実行ジョブをまとめて実行できるようになりました。
  • ジョブのURLを叩いた時に以前はすべてのジョブが実行されていましたが、「デフォルト」ジョブセットのジョブのみ実行されるようになりました。これマジありがたい
  • 以前はジョブのURLをcrontabで叩くなどして実行する必要がありましたが、サイトにアクセスがあった際についでに実行するというオプションが追加されました。WordPressのwp-cronと似たしくみですね。cronが使えないレンサバで使いやすくなりました。
  • 自動実行ジョブでキューが使えるようになりました。大量のデータを処理するジョブを簡単に作れるようになりました。

詳しくはバージョン5.6.2.1のリリースノートをご覧ください。

で、このキュー機能がこれまたマジ便利です。100件ずつ実行してくれますので、負荷のかかる件数の多い処理でも安心して実行できます。内部的にはZend_Queueクラスを使っています。

キュー付き自動実行ジョブの例:全ページの「Sidebar」エリアに入ってるブロックを削除する

JobクラスではなくQueueableJobクラスを継承し、$jSupportsQueueプロパティをtrueにするのが通常のジョブと違うところです。

startメソッドでZend_Queue->sendでキューメッセージを送っています。processQueueItemメソッドで、キューメッセージを受け取ってなんやかやします。

かんたんに書けるのがお分かりいただけるかと。いやはや、concrete5便利だな〜


Share this entry