Swoole Timer 的應用

這篇文章主要分享 Timer 毫秒精度的定時器。

本地版本:PHP 7.2.六、Swoole 4.3.1。
Timer

主要有三個方法:

swoole_timer_tick 間隔的時鐘控制器

swoole_timer_after 指定的時間後執行

swoole_timer_clear 刪除定時器

示例代碼:


運行結果:

    tick 3000ms - 2019-04-07 21:36:56    
    tick 3000ms - 2019-04-07 21:36:59    
    tick 3000ms - 2019-04-07 21:37:02    
    after 9000ms - 2019-04-07 21:37:02

應用場景

1、好比,天天凌晨跑業務腳本,腳本中包括了請求其餘業務方或第三方的接口,若是接口超時無響應或沒有數據返回,須要進行重試。

重試機制爲:每5隔分鐘再發送一次請求,最多嘗試5次,在5次內成功中止該任務,5次仍失敗也中止該任務。

示例代碼:


運行結果:

    2019-04-07 21:40:48 執行任務中...(1)    
    2019-04-07 21:40:48 請求接口失敗,5分鐘後再次嘗試    
    2019-04-07 21:45:48 執行任務中...(2)    
    2019-04-07 21:45:48 請求接口失敗,5分鐘後再次嘗試    
    2019-04-07 21:50:48 執行任務中...(3)    
    2019-04-07 21:50:48 請求接口失敗,5分鐘後再次嘗試    
    2019-04-07 21:55:48 執行任務中...(4)    
    2019-04-07 21:55:48 請求接口失敗,5分鐘後再次嘗試    
    2019-04-07 22:00:48 執行任務中...(5)    
    2019-04-07 22:00:48 請求接口失敗,已失敗5次,中止執行

2、好比,設計一個用WEB界面管理管理定時任務的系統。

Linux Crontab 最小時間粒度爲分鐘。

PHP Swoole 最小時間粒度爲毫秒。

    0   1   2   3   4   5    
    |   |   |   |   |   |    
    |   |   |   |   |   +------ day of week (0 - 6) (Sunday=0)    
    |   |   |   |   +------ month (1 - 12)    
    |   |   |   +-------- day of month (1 - 31)    
    |   |   +---------- hour (0 - 23)    
    |   +------------ min (0 - 59)    
    +-------------- sec (0-59)

WEB界面管理

    登陸、權限管理

    任務管理(增刪改查)

    腳本機管理(機器IP地址)

    任務日誌

架構圖



swoole

相關文章
相關標籤/搜索