Quy tắc danh mục cập nhật hàng ngày không hoạt động


15

Tôi gặp phải vấn đề là các quy tắc cập nhật hàng ngày của Magento không hoạt động. Điều này có nghĩa là không có thay đổi giá sản phẩm khi ngày hết hạn của quy tắc danh mục, vì vậy tôi phải nhấn nút áp dụng quy tắc trong Quản trị viên. Cron được cấu hình và làm việc. Có vẻ như phương pháp catalogrule / observer :: DailyCatalogUpdate sẽ tự động kiểm tra và áp dụng các quy tắc mỗi ngày, nhưng nó không (tôi cũng đã cố gắng khởi chạy thủ công). Đây là mã lõi Magento:

<!--file: app/code/core/Mage/CatalogRule/etc/config.xml-->
<crontab>
    <jobs>
        <catalogrule_apply_all>
            <schedule>
                <cron_expr>*/1 * * * *</cron_expr>
            </schedule>
            <run>
                <model>catalogrule/observer::dailyCatalogUpdate</model>
            </run>
        </catalogrule_apply_all>
    </jobs>
    ...
</crontab>

Người quan sát:

/*file app/code/core/Mage/CatalogRule/Model/Observer.php*/
public function dailyCatalogUpdate($observer)
{
    Mage::getResourceSingleton('catalogrule/rule')->applyAllRulesForDateRange();

    return $this;
}

Tôi đã có một phương pháp quan sát sửa đổi thành công như sau:

/*file app/code/core/Mage/CatalogRule/Model/Observer.php*/
public function dailyCatalogUpdate($observer)
{
    Mage::getModel('catalogrule/rule')->getResourceCollection()
                  ->walk(array(
                         Mage::getResourceSingleton('catalogrule/rule'),
                         'updateRuleProductData'
                  ));
    Mage::getResourceSingleton('catalogrule/rule')->applyAllRulesForDateRange();

    return $this;
}

Cách này quy tắc được kiểm tra và áp dụng mỗi ngày và giá sản phẩm đang được thay đổi nếu quy tắc hết hạn. Tôi không tin rằng đó là lỗi của Magento. Xin vui lòng, tư vấn vấn đề mà các quy tắc không được kiểm tra và áp dụng tự động là gì?


Có bất kỳ lỗi nào được ghi vào nhật ký lỗi PHP của bạn hoặc cột thông báo trên bảng cron_schedule không? Tôi cho rằng cron thực tế đang được gọi vì bạn cho biết bạn đã có một số thành công bằng cách sửa đổi phương thức quan sát viên.
davidalger

Ngoài ra, bạn có thể đặt một số cuộc gọi nhật ký trong trình quan sát ban đầu và xem nếu nó được gọi. Chỉ để được an toàn về điều đó.
Petar Dzhambazov

Câu trả lời:


7

Gần đây tôi gặp vấn đề tương tự khi tôi đang thử nghiệm một quy tắc giá mới cho dự án của chúng tôi. Và lý do khiến tôi đau đầu là tôi đã không nhận thấy rằng mỗi khi bạn tạo quy tắc mới hoặc chỉnh sửa một số quy tắc hiện có - bạn nên nhấn nút " Áp dụng quy tắc " để Magento biết về các thay đổi quy tắc của mình.


2
Cảm ơn rât nhiều. Bạn đã đúng: quy tắc lưu là không đủ cho các thay đổi. Sẽ thật tuyệt khi có thêm cột trong lưới quy tắc cho biết quy tắc có được áp dụng hay không.
vovsky

DailyCatalogUpdate được cho là áp dụng các quy tắc hàng đêm nếu bạn không nhấn nút đó. Nếu không thì mục đích của cron đó là gì?
Ngỗng

7

Đảm bảo nhấn "Áp dụng quy tắc" không phải lúc nào cũng đủ. Gần đây tôi phát hiện ra rằng nếu cron không được thiết lập đúng, tại một thời điểm nào đó trong tương lai, các quy tắc sẽ không được áp dụng.

Tôi đã không thể thực sự đóng đinh khi các quy tắc ngừng hoạt động. Trong trường hợp của tôi, tôi đã có một số quy tắc được áp dụng dựa trên nhóm khách hàng (bán buôn).

  1. Kiểm tra cron_schedulebảng. Hãy chắc chắn rằng bạn có một số mục ở đây tương ứng với catalogrule_apply_all(tôi nghĩ đó là tên quy trình).
  2. Đặt cronjob trong config.xmltệp của mô-đun CatalogRule để chạy mỗi phút hoặc lâu hơn (để kiểm tra) với * / 1.
  3. Nhìn lại cron_schedulebảng và tiếp tục tải lại sau mỗi vài phút. Bạn sẽ thấy các quy trình mới được thêm / thực hiện tự động mà không cần phải nhấn thủ công cron.phptệp của cửa hàng .
  4. Nếu bạn không thấy bất kỳ quy trình nào được cập nhật thủ công, hãy SSH vào trang web với tư cách là người dùng sở hữu các tệp của trang web. Từ một dòng lệnh: crontab -e(bạn có thể ở trong Vim và không biết phải làm gì, tôi đề nghị google sử dụng các lệnh Vim cơ bản).
  5. Đặt crontab để chạy: */1 * * * * /path/to/your/cron.sh
  6. Bây giờ hãy kiểm tra lại cron_schedulebảng để đảm bảo rằng các quy trình cron đang thực hiện tự động.
  7. Hy vọng, tất cả là tốt ở điểm này. Đi trước và quay lại và thiết lập các quy trình cron của bạn để chạy ở các khoảng thời gian mong muốn.

3

Kiểm tra nếu công việc được lên lịch

Bạn có thể làm điều này bằng cách kiểm tra cơ sở dữ liệu hoặc cài đặt tiện ích mở rộng này: Aoe_Scheduler

Kiểm tra nếu công việc làm việc

Tạo một tập lệnh php run_my_rules.phpvà chỉ đưa vào đó nội dung cho hàm: dailyCatalogUpdatesau đó chạy nó từ bàn điều khiển. Xem những gì đang xảy ra.

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.