
Cronjob là chức năng để thực thi bất cứ lệnh nào trong một khoảng thời gian nhất định bởi Server. Nói một cách đơn giản cronjob giúp lên lịch để thực hiện lệnh một cách tự động (giống như việc chúng ta cài báo thức vậy!).
Tại sao nó lại là một chức năng hữu ích. Giả sử bạn muốn thực hiện một lệnh nào đó vào lúc 12h đêm(thời gian mà bạn khó có thể thực hiện được). Đó là lí do tại sao chúng ta cần một Cronjob trong web server của bạn.
Vậy Cronjob thực chất là gì?
Cronjob là một tính năng tuyệt vời của Linux. Cronjob sẽ tạo ra một script hoặc một command line thực thi một cách tự động đúng vào thời gian bạn đã chỉ định. Bởi vì lí do đó nên Cron là lựa chọn hợp lí để thực hiện một công việc lặp đi lặp lại hàng ngày hoặc hằng tuần. Trong Magento cần cronjob để thực hiện một số công việc cần được thực hiện thường xuyên như :
- Reindexing
- Update giá cả
- Gửi thông báo cho khách hàng
- Gửi thông báo cho admin ….
Tạo Cronjob trong Magento 2
File: app/code/ViMagento/HelloWorld/etc/crontab.xml
1 2 3 4 5 6 7 8 |
<?xml version="1.0" ?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Cron:etc/crontab.xsd"> <group id="vimagento_cron"> <job instance="ViMagento\HelloWorld\Cron\Test" method="execute" name="vimagento_helloworld_cron"> <schedule>* * * * *</schedule> </job> </group> </config> |
- group id : là group của bạn. Bạn có thể chỉ chạy một group tại mỗi lần
- job instance: là class được gọi đến khi thực thi cron
- job method: method được thực thi trong job instance
- job name: là giá trị id của cronjob
- schedule: lên lịch để cronjob thực thi
1 2 3 4 5 6 7 8 |
* * * * * command to be executed | | | | | | | | | +----- Day of week (0 - 7) (Sunday=0 or 7) | | | +------- Month (1 - 12) | | +--------- Day of month (1 - 31) | +----------- Hour (0 - 23) +------------- Minute (0 - 59) |
File: app/code/ViMagento/HelloWorld/Cron/Test.php
1 2 3 4 5 6 7 8 9 10 |
namespace ViMagento\HelloWord\Cron; class Test { public function execute(){ echo "hello world!"; } } |
Sau khi hoàn thành, plush cache và chạy magento cron:run –group=”vimagento_cron” từ command line.
Kết luận
Vậy là chúng ta đã tạo xong được một Cronjob trong Magento 2. Ngoài ra các bạn cũng có thể sử dụng một extension để lên lịch cho Cronjob một cách nhanh chóng là Cronjob Management. Mình cũng chỉ là newbie về Magento2. Mình viết blog chỉ muốn lưu lại những gì mình tìm hiểu được về Magento. Mọi người đừng nén đá nhé. 🙂 Link mình tham khảo:
https://www.mageplaza.com/magento-2-cron-schedule/
https://www.mageplaza.com/devdocs/magento-2-create-cron-job/