A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

本地版本:PHP 7.2.6、Swoole 4.3.1。
Timer

主要有三个方法:

swoole_timer_tick 间隔的时钟控制器

swoole_timer_after 指定的时间后执行

swoole_timer_clear 删除定时器

示例代码:
[img=1080,583]https://ss.csdn.net/p?https://mmbiz.qpic.cn/mmbiz_png/ ... Y9Xg/640?wx_fmt=png[/img]

运行结果:

    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次仍失败也停止该任务。

示例代码:

[img=1080,737]https://ss.csdn.net/p?https://mmbiz.qpic.cn/mmbiz_png/ ... 9wlg/640?wx_fmt=png[/img]
运行结果:

    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次,停止执行

二、比如,设计一个用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地址)

    任务日志

架构图
[img=1080,737]https://ss.csdn.net/p?https://mmbiz.qpic.cn/mmbiz_png/ ... 9wlg/640?wx_fmt=png[/img]

2 个回复

倒序浏览
有任何问题欢迎在评论区留言
回复 使用道具 举报
或者添加学姐微信
DKA-2018
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马