Crons屬性
Adobe Commerce使用crons
屬性來排程重複活動。 它非常適合用於排程在一天中的特定時間執行的特定工作。 由於唯讀環境的性質,在雲端基礎結構專案的Adobe Commerce的Web執行個體上一次只能執行一個cron工作。 最佳實務是將長期執行的工作分解為較小的已排入佇列的工作。 或者,您也可以建置背景工作執行個體。
Adobe建議您以檔案系統擁有者身分執行crons
。 請 不要 以root
或網頁伺服器使用者的身分執行crons
。
此設定不同於Adobe Commerce的內部部署,後者有多個預設的cron工作。 請參閱 設定指南 中的設定cron工作。
設定cron工作
crons
屬性說明排程觸發的處理序。 每個工作都需要名稱和下列選項:
spec
— 用於排程的cron運算式。cmd
— 要在start
和stop
上執行的命令。shutdown_timeout
—(Optional)如果cron工作已取消,這是傳送SIGKILL訊號以停止工作或處理序的秒數。 預設值為10秒。timeout
—(Optional)逾時前cron工作可以執行的最長時間。 預設為允許的最大值86400秒(24小時)。
依預設,每個Commerce雲端專案在.magento.app.yaml
檔案中具有下列預設crons
設定:
crons:
cronrun:
spec: "* * * * *"
cmd: "php bin/magento cron:run"
如果您的專案需要自訂cron工作,您可以將其新增到預設crons
設定。 請參閱建置cron工作。
crontab
Adobe Commerce僅將auto-crons設定選項新增至Pro專案,以支援中繼和生產環境中的自助crons
設定。 如果已啟用此選項,您可以使用crontab
來檢閱cron組態。 這是 無法 用於入門專案。
雖然您可以使用crontab
檢閱Pro專案的組態,但Adobe Commerce不會使用crontab
針對部署在雲端基礎結構上的網站執行cron工作。
若要檢閱Pro環境上的cron設定:
-
使用SSH登入遠端環境。
-
列出已排程的cron程式。
code language-shell crontab -l
note note NOTE 如果 crontab -l
命令傳回Command not found
錯誤(僅適用於Pro測試和生產環境),您必須提交Adobe Commerce支援票證以在您的專案上啟用auto-crons自助設定選項。
下列範例顯示僅具有預設crons
組態之環境的crontab
輸出:
username@hostname:~$ crontab -l
# Crontab is managed by the system, attempts to edit it directly will fail.
SHELL=/etc/platform/6fck2obu3244c/cron-run
MAILTO=""
# m h dom mon dow job_name
* * * * * cronrun
建立cron工作
cron作業包括排程和計時規格以及在排程時間執行的命令。 對於入門環境和Pro integration
環境,最小間隔為每5分鐘一次。 對於Pro測試和生產環境,最小間隔為每分鐘一次。 在雲端基礎結構上的Adobe Commerce上,您將自訂cron工作新增到crons
區段中的.magento.app.yaml
檔案。 一般格式為排程的spec
,以及指定要執行的命令或自訂指令碼cmd
。
規格
Adobe Commerce對crons
規格(規格)使用五值運算式: * * * * *
- 分鐘(0到59)對於所有入門和Pro環境,cron工作支援的最低頻率是五分鐘。 您可能需要在「管理員」中進行設定。
- 小時(0到23)
- 日期(1到31)
- 月(1到12)
- 星期幾(0到6) (星期日到星期六;某些系統上也有7是星期日)
部分範例:
00 */3 * * *
會在第一分鐘(上午12:00、凌晨3:00、早上6:00)每三小時執行一次20 */8 * * *
在分鐘20每8小時執行一次(上午12:20、上午8:20、下午4:20)00 00 * * *
每天午夜執行一次00 * * * 1
在星期一的午夜每週執行一次。
.magento.app.yaml
檔案中指定的crons
時間是根據伺服器時區,而不是資料庫中存放區組態值中指定的時區。決定排程時,請考慮完成工作所需的時間。 例如,如果您每三小時執行一次工作,而工作需要40分鐘來完成,則可以考慮變更排程時間。
命令
cmd
指定要執行的命令或自訂指令碼。 指令碼格式可包含下列內容:
<path-to-php-binary> <project-dir>/<script-command>
例如:
crons:
spec: "00 */8 * * *"
cmd: "/usr/bin/php /app/abc123edf890/bin/magento export:start catalog_category_product"
在此範例中,<path-to-php-binary>
是/usr/bin/php
。 包含專案識別碼的安裝目錄為/app/abc123edf890/bin/magento
,而指令碼動作為export:start catalog_category_product
。
新增自訂cron工作至您的專案
在雲端基礎結構平台上的Adobe Commerce上,您可以將自訂新增到.magento.app.yaml
檔案的crons
區段。
integration
環境,最小間隔為每5分鐘一次。 對於Pro測試和生產環境,最小間隔為每分鐘一次。 您無法設定比預設最小值更頻繁的間隔。在Adobe Commerce Pro專案上,您必須先在您的專案上啟用自動程式碼功能,才能使用.magento.app.yaml
檔案將自訂cron工作新增到中繼和生產環境。 如果未啟用此功能,請提交Adobe Commerce支援票證以啟用自動確認。
若要新增自訂cron工作:
-
在本機開發環境中,編輯Adobe Commerce
/app
目錄中的.magento.app.yaml
檔案。 -
在
crons
區段中,使用下列格式新增您的自訂專案:code language-yaml crons: <cron_name_1>: spec: "<schedule_time>" cmd: "<schedule_command>" <cron_name_2>: spec: "<schedule_time>" cmd: "<schedule_command>"
在下列範例中,
productcatalog
工作每八小時匯出一次產品目錄,即該小時後的20分鐘。code language-yaml crons: magento: spec: '* * * * *' cmd: 'php bin/magento cron:run' productcatalog: spec: '20 */8 * * *' cmd: 'bin/magento export:start catalog_product_category'
-
新增、提交和推送程式碼變更。
code language-bash git add .magento.app.yaml && git commit -m "cron config updates" && git push origin <branch-name>
更新cron工作
若要新增、移除或更新自訂工作,請在.magento.app.yaml
檔案的crons
區段中變更設定。 然後,在將變更推播到中繼和生產環境之前,在遠端integration
環境中測試更新。
停用cron工作
您可以在完成維護任務(例如重新索引或清除快取)之前手動停用cron工作,以避免效能問題。 您可以使用ece-tools
CLI命令cron:disable
來停用所有cron工作並停止任何作用中的cron處理序。
若要停用cron工作:
-
在本機工作站上,變更至專案目錄。
-
使用SSH登入遠端環境。
code language-bash magento-cloud ssh
-
停用cron工作並停止作用中的cron程式。
code language-shell ./vendor/bin/ece-tools cron:disable
-
完成任何必要的維護工作後,請務必再次啟用cron工作。
code language-shell ./vendor/bin/ece-tools cron:enable
cron工作疑難排解
Adobe已更新雲端基礎結構上的Adobe Commerce套件,以最佳化雲端基礎結構上的Adobe Commerce上的cron處理並修正cron相關問題。 如果您遇到cron處理問題,請確定您的專案使用的是最新版本的ece-tools
封裝。 請參閱更新ECE-Tools。
您可以在每個環境的應用程式層級記錄檔中檢閱cron處理資訊。 檢視應用程式記錄。
請參閱下列Adobe Commerce支援文章,以取得疑難排解cron相關問題的說明: