[WooCommerce] 內建實作定時定期的功能: Action Scheduler

本篇文章更新時間:2020/04/13
如有資訊過時或語誤之處,歡迎使用 Contact 功能通知。
一介資男的 LINE 社群開站囉!歡迎入群聊聊~


前篇 [WooCommerce] 使用 WP Cron 方法提醒未付款訂單記得付款 筆記, Richer 留言分享了 WooCommerce 有自己的內建 Cronjob 機制可以切入相關定時定期服務。

Action Scheduler

此功能也很強大,且物件導向設計實作,可以當作一個獨立外掛來安裝使用,不一定需要安裝 WooCommerce 也可以用!把 WP Cron 原生的方法再包裝(甚至是可以不依靠內建的 WP Cron),更是做到資源有效管理:

  1. 非同步的處理事件請求
  2. 可以搭配 WP-CLI 功能
  3. 存取系統資源管制(不同主機環境有不同的處理,文件舉例 WP Engine 設定 60 秒、Pantheon 與 SiteGround 預設 120 秒的執行時間,可透過 action_scheduler_queue_runner_time_limit Filter 改變預設值)、預設批次處理 25 個事件請求(可透過 action_scheduler_queue_runner_batch_size Filter 改變預設值)
  4. 記憶體使用率超過 90% 時會避開觸發

使用方法與 WP Cron 無差異太多,文件裡寫道「the wp_ prefix is substituted with as_ and the term event is replaced with action」,就是方法差不多,名字稍微改一下而已!(實際使用差異還是記得去看 API 文件

後記

Action Scheduler 可以說是一套獨立的 Cron 應用,文件看下來優點就是有針對資源的管理。針對這個「資源管理」個人看法是有利有弊,沒有絕對使用的建議。

有利的點是如果應用於觸發「不一定要完成」的事件不錯,反過來說有弊的點就是「你一定要完成」的事件如果執行時超過預設執行秒數,可能就會被中斷。(較 low 的主機比較有可能碰到)

還沒實際應用來觀察問題點,先筆記文件看來的資訊,歡迎留言補充~

最後看了 FAQ 有個讓我更覺得有意思的是:Cavalcade 專案。

Human Made 為了更大型的網站專案,還開發了一套完全可以把 WP Cron 內建方法捨棄使用的「真-排程」高可用功能。詳細更多開發這套系統的原因可以參考「動機」文件。


Share:

作者: Chun

資訊愛好人士。主張「人人都該為了偷懶而進步」。期許自己成為斜槓到變進度條 100% 的年輕人。[//////////____30%_________]

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *