Tôi đã dành gần 3 ngày và không thể hiểu và tạo ra Magento Cron để xử lý các tác vụ theo lịch trình. Tôi đang chạy Magento 1.9.1.0 và gần đây nhận thấy rằng các email đặt hàng hiện đang được xếp hàng thay vì gửi ngay lập tức. Tôi hiểu sự cần thiết nhưng không thể tạo ra hệ thống để chọn hàng đợi.
Đây là sự nhìn thấy của tôi đối với Cronjob.
Đây là dòng lệnh cronjob của tôi.
Đây là cách các tác vụ được tạo trong bảng cron_schedule.
Vì các bản ghi được tạo trong bảng cron_schedule, tôi nghĩ rằng Cron sẽ chạy một lần trong mỗi 5 phút. Nếu tôi xóa thủ công các bản ghi này qua PhpMyAdmin, các bản ghi sẽ được tạo tự động sau một thời gian.
Nhưng trạng thái của các nhiệm vụ vẫn là 'chờ xử lý' và không bao giờ hoàn thành. Không chắc chắn nếu có gì đó sai trong cấu hình của tôi hoặc tôi đang thiếu bất cứ điều gì. Ai đó có thể vui lòng giúp tôi làm thế nào để thực hiện nhiệm vụ theo lịch trình chạy đúng giờ. Ngoài ra tại sao nhiều bản ghi được tạo cho một mã công việc?
Cập nhật
Tôi xóa toàn bộ bảng và cron tạo ra các công việc theo lịch trình. Tất cả các công việc đang ở trạng thái chờ xử lý và không bao giờ chạy thậm chí chờ hơn 60 phút. Có gì đó không ổn trong Magento 1.9.1
Cập nhật 11/02: Hôm nay tôi đã làm một số phân tích thêm về quá trình.
Tôi đã chỉnh sửa cron.php như dưới đây
echo 'iam before mdefault 1';
shell_exec("/bin/sh $baseDir/cron.sh $fileName -mdefault 1 > /dev/null 2>&1 &");
echo 'iam before malways 1';
shell_exec("/bin/sh $baseDir/cron.sh $fileName -malways 1 > /dev/null 2>&1 &");
echo 'i returned success';
Tôi đã chỉnh sửa lớp Mage_Cron_Model_Observer như bên dưới
public function dispatch($observer) {
echo 'iam inside dispath';
Sự hiểu biết của tôi là khi cron chạy -mdefault, nó sẽ gọi hàm điều phối và việc thực thi sẽ xảy ra. Nhưng những gì đã xảy ra là như dưới đây trong đầu ra cron.
Content-type: text/html
iam before mdefault 1iam before malways 1i returned success
Nó có nghĩa là công văn không được gọi là ...
Một lần thử khác
Tôi đã tự thay đổi biến $isShellDisabled = true;
và tôi đã thay đổi bên dưới trong cron.php.
if ($isShellDisabled) {
echo 'before always';
Mage::dispatchEvent('always');
echo 'after always';
Mage::dispatchEvent('default');
echo 'after default';
} else {
Mage::dispatchEvent($cronMode);
}
Đầu ra cron cho ở trên là như dưới đây
Content-type: text/html
before alwaysiam inside dispath alwaysafter always
Bây giờ nó gọi là 'ClarkAlways' nhưng không phải là 'công văn'
Không có câu trả lời nào giúp tôi. Nó không bao giờ chọn các nhiệm vụ theo lịch trình. Tức là khi Cron chạy lần đầu tiên, nó đã tạo thành công các tác vụ trong bảng. Nhưng nó không bao giờ thực hiện nhiệm vụ.
*/5 * * * * /bin/sh PATH_TO_PRODUCTION/cron.sh
nếu có.
cron_schedule
bàn? Kiểm tra xem nó có được lấp đầy với các nhiệm vụ mới sau một giờ hay không