Magento2建立Cron Job的兩種方式(一)
當我們在Magento上開發時,常常會需要例行性的處理一些資料,像是會員、訂單、物流資料等等。尤其是當我們在幫客戶串接各種API或是檔案資料交換時,更是會有需多的排程性工作,而Magento有提供CronJob的機制可以來跑這些排程,或是利用建立Magento的console command並且新排程至Linux的crontab中來達成,當然你也可以利用其他的程式語言像是Python、C#等等等,自行新增crontab連線至資料庫中處理。但這邊我們基本上就還是來討論利用Magento的架構來達成。
Magento CronJob:
1.我們直接用magento中的CronJob機制,我們先在你自行建立的module中建立你實際要執行的php,而路徑是:
app/code/YourVendorName/YourModule/Cron/iWantToRun.php
而內容就是你要執行的
<?php namespace YourVendorName\YourModule\Cron; class Test { protected $_logger; public function __construct( \Psr\Log\LoggerInterface $logger ) { $this->_logger = $logger; } /** * Method executed when cron runs in server */ public function execute() {
//這邊都是你要執行的內容
$this→_logger→debug('Hello AstralWeb!'); return $this; } }
2.再到app/code/YourVendorName/YourModule/etc/crontab.xml中建立一個排程設定檔crontab.xml的檔案,並加入以下內容:
<?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="yourgroup"> <job name="your_cron_name" instance="YourNamespace\YourModule\Cron\Test" method="execute"> <schedule>*/30 * * * *</schedule>--> <!-- run 30th minutes --> </job> </group> </config>
這邊要記得把你的排程名稱及實際要跑的php寫在 job tag裡的name及instance中,而schedule這個tag就是排程周期設定,格式與linux的crontab一樣,之後別忘了在command line中 bin/magento setup:di:compile一次,然後bin/magento cron:run直接跑一次cronjob就可以看到你執行的結果囉!
*或是也可以bin/magento cron:run –group="<cron group name>" 來只執行你的cronjob就好。
以上就是這次關於如何在Magento 2 中建立CronJob的分享,更多教學,請務必訂閱訂閱歐斯瑞電子報,以及追蹤我們的臉書粉絲團喔!
更多Magento相關文章請看: Magento教學導覽
我要留言