這篇文章主要分享 Timer 毫秒精度的定時器。本地版本:PHP 7.2.6、Swoole 4.3.1。Timer主要有三個方法:swoole_timer_tick 間隔的時鐘控制器swoole_timer_after 指定的時間後執行swoole_timer_clear 刪除定時器示例代碼:運行結 ...
這篇文章主要分享 Timer 毫秒精度的定時器。
本地版本:PHP 7.2.6、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
應用場景
一、比如,每天凌晨跑業務腳本,腳本中包括了請求其他業務方或第三方的介面,如果介面超時無響應或沒有數據返回,需要進行重試。
重試機製為:每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次,停止執行
這裡我還準備了一分學習圖和資料,如下:
鏈接:https://pan.baidu.com/s/1v5gm7n0L7TGyejCmQrMh2g 提取碼:x2p5
免費分享,但是X度限制嚴重,如若鏈接失效點擊鏈接或搜索加群 群號518475424。
二、比如,設計一個用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地址)
任務日誌
架構圖