回答:
cronの機能とMagentoについて知っておく必要のあるすべてを網羅しているMagentoCommerce Webサイトから直接入手できる以下の記事を読みたいと思います。
強調する:内部の仕組み
Magentoのcrontabメカニズムは、システムのcronジョブを使用して定期的にトリガーされます。呼び出しはcron.phpファイルで開始されます。
<?php
// initialize configuration and load event observers only from /crontab/ section
Mage::getConfig()->init()->loadEventObservers('crontab');
// initialize crontab event area
Mage::app()->addEventArea('crontab');
// dispatch 'default' event for observers specified in crontab configuration
Mage::dispatchEvent('default');
このシーケンスによりが呼び出されMage_Cron_Model_Observer→dispatch()
、次のようになります。
に基づいてジョブを実行する必要があるたびにタスクがスケジュールされます
<schedule><cron_expr>0 1 * * *</cron_expr></schedule>
式とcron_scheduleテーブルに格納されます。各レコードは、次のフィールドで構成されています。
schedule_id
-スケジュールされたタスクの一意の識別子job_code
-構成からのジョブ識別子status
-のいずれか pending, running, success, missed, error
messages
-ジョブによって実行されたメソッドによって報告されたカスタムテキストcreated_at
-タスクが作成された日時scheduled_at
-タスクの実行が計画されている日付/時刻executed_at
-タスクが実際に実行された日付/時刻(実行前はnull)finished_at
-タスクの実行が終了した日付/時刻(実行前はnull)
スケジュールが生成されると、status
に設定されているpending
、created_at
にnow()
し、scheduled_at
ターゲットの日付/時刻に。
保留中のスケジュールが実行されると、status
はrunning
およびexecuted_at
に設定されnow()
ます。
スケジュールされたタスクが正常に完了status
するsuccess
と、はおよびfinished_at
に設定されnow()
ます。
スケジュールされたタスクが例外をスローした場合、status
はエラーとfinished_at
に設定されますnow()
。
タスクのステータスがある場合pending
とscheduled_at
設定された値「内で実行されていない場合不在」よりも古い、ステータスがに設定されていますmissed
。