zoukankan      html  css  js  c++  java
  • Swoole Timer 的应用

    这篇文章主要分享 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地址)

        任务日志

    架构图



  • 相关阅读:
    2块硬盘宝塔只能读取一块?宝塔一键磁盘挂载命令
    Python爬虫入门笔记
    linux搭建web(网站)环境
    织梦dedecms管理模块管理不动卡死解决办法
    php7.1安装swoole扩展
    Linux下centos7、PHP7.1安装Redis扩展教程
    centos7利用yum安装lnmp的教程(linux+nginx+php7.1+mysql5.7)
    Linux各目录及每个目录的详细介绍
    Linux samba的配置和使用
    PHP abstract与interface之间的区别
  • 原文地址:https://www.cnblogs.com/it-3327/p/11815895.html
Copyright © 2011-2022 走看看