Bất cứ ai có thể giải thích cho tôi, làm thế nào magento cron_schedule chạy chính xác?


7

Khi chúng ta chạy cron.php của magento thì một số công việc được tạo trong bảng cron_schedule của magento? Bất cứ ai có thể cho tôi biết làm thế nào magento thực hiện chính xác các công việc này? Ý tôi là làm thế nào tình trạng công việc được thay đổi từ chờ xử lý thành thành công. Cron.php chỉ chèn công việc trong bảng không thực thi công việc

Câu trả lời:


16

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()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 runningexecuted_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 successfinished_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à pendingscheduled_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.


Nhanh cho các tài liệu mà Magento bảo quản ...
janw

@janw tha thứ cho tôi?
Moose

1
Liên kết trên bị hỏng (chuyển hướng chung). Tôi ghét cách Magento phá vỡ tất cả các liên kết.
janw

1
Vâng, nó rất khó chịu, giống với thông tin diễn đàn của họ. Dù sao, tôi đã sao chép hầu hết bài viết vào câu trả lời của mình để nó vẫn tương đối hoàn chỉnh :)
Moose
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.