Bạn muốn đọc qua bài viết sau đây có sẵn trực tiếp từ trang web MagentoC Commerce bao gồm tất cả những gì bạn cần biết về chức năng cron & Magento:
Magento - Wiki - Cách thiết lập công việc định kỳ
Để làm nổi bật: Hoạt động bên trong
Cơ chế Magront crontab được kích hoạt định kỳ bằng cách sử dụng công việc cron hệ thống. Cuộc gọi được bắt đầu trong tệp 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');
Trình tự này sẽ gọi Mage_Cron_Model_Observer→dispatch(), lần lượt sẽ:
- thực hiện các nhiệm vụ theo lịch trình
- tạo các nhiệm vụ theo lịch trình trong tương lai nếu cần
- làm sạch lịch sử của các nhiệm vụ theo lịch trình
Nhiệm vụ được lên lịch cho mỗi lần công việc cần được chạy dựa trên
<schedule><cron_expr>0 1 * * *</cron_expr></schedule>
biểu thức và được lưu trữ trong bảng cron_schedule. Mỗi bản ghi bao gồm các trường sau:
schedule_id - định danh duy nhất cho nhiệm vụ theo lịch trình
job_code - định danh công việc từ cấu hình
status - có thể là một trong pending, running, success, missed, error
messages - văn bản tùy chỉnh được báo cáo theo phương thức được thực thi bởi công việc
created_at - ngày / giờ khi tác vụ được tạo tại
scheduled_at - ngày / giờ khi tác vụ được lên kế hoạch thực hiện
executed_at - ngày / giờ khi tác vụ thực sự được thực thi (null trước khi thực hiện)
finished_at - ngày / giờ khi tác vụ kết thúc thực hiện (null trước khi thực hiện)
Khi lịch biểu được tạo, statusđược đặt thành pending, created_atđến now()và scheduled_atnhắm mục tiêu ngày / giờ.
Khi lịch trình chờ xử lý được thực thi, statusđược đặt thành runningvà executed_atthành now().
Khi tác vụ theo lịch trình kết thúc thành công, statusđược đặt thành successvà finished_atthành now().
Khi tác vụ theo lịch trình đã đưa ra một ngoại lệ, statusđược đặt thành lỗi và finished_atthành now().
Nếu tình trạng công việc là pendingvà scheduled_atcũ hơn “nhỡ nếu không chạy trong” giá trị cấu hình, tình trạng được thiết lập để missed.