歡迎您光臨本站 註冊首頁

ThinkAdmin v5.0 增加自定非同步任務機制

←手機掃碼閱讀     admin @ 2019-08-14 , reply:0

ThinkAdmin v5.0 增加自定義任務機制,不再依賴於 think-queue 組件。

去除數據表  system_jobs 和 system_jobs_log,增加 system_queue 表。

關於非同步任務處理指令如下:

  • 執行 php think xtask:listen 啟動非同步任務監聽守護主進程

  • 執行 php think xtask:query 查詢正在執行的所有任務進程

  • 執行 php think xtask:start 創建非同步任務監聽守護主進程

  • 執行 php think xtask:state 查看非同步任務監聽主進程狀態

  • 執行 php think xtask:stop 平滑停止非同步任務所有的進程

admin/sys.php 函數增加 sysqueue 函數以方便增加 任務隊列。

sysqueue($title, $loade, $later = 0, $data = [], $double = 1)

可以指定任務的標題,執行任務,延時時間,任務附加數據,允許創建重複任務等。

有些任務,在待處理和處理中是不需要再創建重複任務的,$double 就需要設置為0,這是根據標題來識別的,所以標題也可以適當加上個性名稱。

自建的非同步處理是多進程任務處理,其中 windows 是基於 wmic 指令創建進程實現的,而 linux 則是通過 & 符實現。

因為是非同步並列執行,建議自行控制下任務數據,免得過多消耗系統資源而影響項目正常使用。

在部署時,通常我們只需要創建定時器去執行 php think xtask:start 就可以守護非同步任務監聽進程。

目前,ThinkAmdin V5 自定義非同步任務機制支持兩種規則機制。

一、自定義單獨的處理類,需要繼承 app\admin\queue\Queue 抽象類,實現 execute 方法,參數為  $input, $output, $data 
其中 input 為 cli 輸入對象,output 為 cli 輸出對象,而 data 為任務綁定的數據。詳情可以閱讀:https://gitee.com/zoujingli/ThinkAdmin/blob/master/application/wechat/queue/WechatQueue.php

二、自定義 ThinkPHP 指定,默認使用 Console::call() 去嘗試執行傳入的指令。如:

sysqueue("同步[{$this->appid}]粉絲列表",'xfans:all', 0, ['appid' => $this->appid], 0);

關於ThinkAdmin更多用法,請移步 https://gitee.com/zoujingli/ThinkAdmin


[admin ]

來源:OsChina
連結:https://www.oschina.net/news/109060/thinkadmin-5-0-released
ThinkAdmin v5.0 增加自定非同步任務機制已經有170次圍觀

http://coctec.com/news/all/show-post-211957.html