Magentoには定時処理(Cronジョブといいます)を行う仕組みが備わっています。
たとえばカタログ価格ルールの適用や、特別価格の適用、ニュースレターの配信といった処理は全てCronジョブによって実現されています。
ところが、どんなジョブが実行されているのかは標準状態では管理画面で確認することができません。
そこで、Magento Connectで公開されている「AOE_Scheduler」を導入して可視化してみましょう。

AOE_Schedulerとは

AOE_SchedulerとはMagento Connectで配布されている無償のエクステンションです。
Magento Community Edition 1.4から1.7までの対応、となっていますが、1.8.1やEnterprise Editionでも問題なく動作します。

このエクステンションはMagentoのCronジョブデータを可視化してくれるだけでなく、滞留しているジョブのクリーンアップや、ジョブリストの初期化、管理者によるジョブの停止などができます。

また、ジョブがきちんと実行されているかを監視する機能を備えていて、ジョブが遅延したり停止している場合は警告メールが管理者に届きます。 

インストール方法

インストール方法は簡単です。
このエクステンションはデータベースに対して変更を加えないので、比較的気軽にインストールすることができます。

Magento Connect Managerを使う場合

Magento Connect Managerを使う場合は、他のエクステンションと同じように、Magento Connectの画面上で、エクステンションのキーを取得します。
あとはMagento Connect Managerの画面にそのキーを貼り付けて、インストールを行います。 

mageコマンドを使う場合

パーミッションの関係でMagento Connect Managerが使えない場合は、mageコマンドを使用します。
事前に、「./mage mage-setup」を実行しておくのを忘れないでください。
エクステンションをインストールするには、 

./mage install community Aoe_Scheduler

というようにコマンドを実行します。
インストールが終わったら、Magentoのキャッシュをクリアします。

手動でインストールする場合

手動でインストールしたい場合は、mageコマンドを使用してエクステンションのアーカイブをダウンロードします。

./mage download community Aoe_Scheduler

とタイプすると、所定のディレクトリにエクステンションのアーカイブをダウンロードできます。
あとはファイルを展開し、所定のディレクトリに配置します。
ファイルを配置後、Magentoのキャッシュをクリアしてください。 

使い方

AOE_Schedulerの使い方は難しくありません。幾つかの設定をするだけで簡単に使うことができます。

初期設定

AOE_Schedulerをインストールしたあとは、初期設定をする必要があります。
初期設定、といっても大層なものではなく、AOE_SchedulerがCronジョブの監視をするための設定と、エラー発生時のメール送信先を設定する程度です。
管理画面の、「システム>設定>システム」を開くと、項目が増えています。
「エラーEmail受信者」のところにシステム管理者のメールアドレスを入力して、保存しておくだけで通常はよいと思います。

設定画面

予定されているジョブのリストを見る

さて、早速予定されているジョブのリストを見てみましょう。
管理画面の「システム>Scheduler」というところにAOE_Schedulerが作成したメニューが増えています。
まずは「List View」を選んでみましょう。そうすると今予定されているCronジョブのリストが表示されます。

ジョブリスト

  • 実行中のジョブ・・・オレンジ
  • 成功したジョブ・・・緑
  • 失敗したジョブ・・・赤
  • 実行待ちジョブ・・・グレー

でリストされます。
失敗したジョブや長時間実行しているジョブがある場合は、何らかの対処をする必要がある、ということになります。
また、AOE_Schedulerは、実行開始から120分以上かかっているジョブはエラーとみなして報告してきます。
ここを見るだけでCronジョブの状態がわかるので、時々はチェックしておくとよいでしょう。 

有効なジョブのリストを見る

次にどのジョブがいつ実行されるのかを見てみましょう。
「システム>Scheduler>Schedule Configuration」を選びます。
そうすると有効なCronジョブがリストされます。この中には実行予定に入っていないものも含まれています。
なぜなら、MagentoのCronジョブは実行前15分前後に作成されるからで、1日に1回しか実行しないジョブは直前にならないと生成されないからです。

スケジュールリスト 

さて、この一覧の「Cron Expression」列を見てください。「0 0 * * *」というような文字列があります。
プログラマやサーバ管理者の方はおなじみだと思いますが、これはUnixのcronの設定と全く同じフォーマットです。左から、「分 時 日 月 曜日」を表していて、「0 0 * * *」は毎日深夜0時に実行することを意味しています。
また、「*/5 * * * *」というのは5分おきに実行することを意味します。実行予定が空欄のものは、設定がないことを意味しています。 

ジョブの実行状況をタイムラインで見る

AOE_Schedulerはジョブの実行状況をタイムラインで見ることができます。
「システム>Scheduler>Timeline View」を開くと確認できます。

タイムライン

この画面で何かができるわけではありませんが、ジョブ同時の実行タイミングをわかりやすく表示してくれるため、多くのジョブが実行されるタイミングを把握しやすくなります。

ジョブが遅延したりエラーになるとどうなるか

AOE_SchedulerはCronジョブの実行を監視しています。
インストール直後は監視ジョブが登録されていないので、15分〜30分程度警告が出ます。ですがこれは異常ではありません。
しばらくすると正常なステータスに変わります。

問題は運用中にジョブが遅延したり、エラーになった場合です。
AOE_Schedulerはこのような場合に通知メールを送信します。
連続してジョブがエラーになるような場合は、複数のメールが届くことがありますので注意が必要です。

終わりに

Magentoには多数のCronジョブが実行されます。
時にはそのジョブが他のジョブを遅延させることがあります。
放置していると思わぬトラブルに見舞われることがあるので、AOE_Schedulerを導入して、常時正しく実行されているかどうかを監視・把握できるようにしましょう。

なお、AOE_Schedulerのインストールや初期設定、使用方法についてのご質問は、をご利用ください。
インストール作業などのご依頼は、をご利用いただくと、一両日中に対応が可能です。