回答:
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, errormessages -ジョブによって実行されたメソッドによって報告されたカスタムテキスト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。