這篇文章主要分享 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