专栏首页北溟有鱼QAQEasyswoole下Crontab定时器如何实现奇偶数时间分别运行不用的定时任务

Easyswoole下Crontab定时器如何实现奇偶数时间分别运行不用的定时任务

Easyswoole中的定时器

  • Timer定时器,框架对原生的毫秒级定时器进行了封装(这是毫秒级)
  • Crontab定时器,EasySwoole支持用户根据Crontab规则去添加定时器,时间最小粒度是1分钟(这是分钟)

cron通用表达式

    *    *    *    *    *
    -    -    -    -    -
    |    |    |    |    |
    |    |    |    |    |
    |    |    |    |    +----- day of week (0 - 7) (Sunday=0 or 7)
    |    |    |    +---------- month (1 - 12)
    |    |    +--------------- day of month (1 - 31)
    |    +-------------------- hour (0 - 23)
    +------------------------- min (0 - 59)

cron特殊表达式

@yearly                    每年一次 等同于(0 0 1 1 *) 
@annually                  每年一次 等同于(0 0 1 1 *)
@monthly                   每月一次 等同于(0 0 1 * *) 
@weekly                    每周一次 等同于(0 0 * * 0) 
@daily                     每日一次 等同于(0 0 * * *) 
@hourly                    每小时一次 等同于(0 * * * *)

奇数时间定时任务

<?php


namespace App\Crontab;


use EasySwoole\EasySwoole\Crontab\AbstractCronTask;

class OddNumber extends AbstractCronTask
{

    public static function getRule(): string
    {
        // TODO: Implement getRule() method.
		//定时器表达式
        return '1-59/2 * * * *';
    }

    public static function getTaskName(): string
    {
        // TODO: Implement getTaskName() method.
		//定时任务名称
        return  '奇数时间运行';
    }

    function run(int $taskId, int $workerIndex)
    {
        // TODO: Implement run() method.
		//定时任务处理逻辑
        var_dump('奇数运行 '.date('Y-m-d H:i'));
    }

    function onException(\Throwable $throwable, int $taskId, int $workerIndex)
    {
        // TODO: Implement onException() method.
        echo $throwable->getMessage();
    }
}

偶数时间定时任务

<?php


namespace App\Crontab;


use EasySwoole\EasySwoole\Crontab\AbstractCronTask;

class EvenNumber extends AbstractCronTask
{

    public static function getRule(): string
    {
        // TODO: Implement getRule() method.
		//定时器表达式
        return '0-58/2 * * * *';
    }

    public static function getTaskName(): string
    {
        // TODO: Implement getTaskName() method.
		//定时任务名称
        return  '偶数时间运行';
    }

    function run(int $taskId, int $workerIndex)
    {
        // TODO: Implement run() method.
		//定时任务处理逻辑
        var_dump('偶数运行 '.date('Y-m-d H:i'));
    }

    function onException(\Throwable $throwable, int $taskId, int $workerIndex)
    {
        // TODO: Implement onException() method.
		 echo $throwable->getMessage();
    }
}

添加定时计划

   public static function mainServerCreate(EventRegister $register)
    {
        // TODO: Implement mainServerCreate() method.
        //奇数时间定时任务
        Crontab::getInstance()->addTask(OddNumber::class);
        //偶数时间定时任务
        Crontab::getInstance()->addTask(EvenNumber::class);

    }

运行 php easyswoole start 即可,效果图如下

本文为北溟有鱼QAQ原创文章,转载无需和我联系,但请注明来自北溟有鱼QAQ https://www.umdzz.cn

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • EasySwoole实现Execl导入导出

    需求:easyswoole实现的服务端要实现execl表格的导入以及导出,从而实现人员以及成绩的变更

    北溟有鱼QAQ
  • Centos7实现开机自启EasySwoole

    需求:前段时间刚用写了教程安装centos系统,后面就内网利用EasySwoole实现Tcp服务端,为保持容错,避免断电造成服务死机而无法维护

    北溟有鱼QAQ
  • EasySwoole之定时任务面板

    2、首先任务有间隔执行(秒级)和 定时执行(分级),所以就考虑到每种类型的任务开两个进程来执行(也就是正哥所说的管理进程和执行进程),最终间隔执行是开启自定义进...

    北溟有鱼QAQ
  • C# 常用日期类型转换帮助类

    本文转载:http://www.cnblogs.com/iamlilinfeng/p/3378659.html

    跟着阿笨一起玩NET
  • 编程语言中的值数据类型和引用数据类型之间的区别

    2.值数据类型在参数传递中是值传递,也就是传递的值给形参,而在函数里形参的改变不影响实参的值;引用数据类型在参数传递中是引用传递,也就是传递的值是地址,而在函数...

    绝命生
  • 关于区块链安全的实际性思考

    区块链(Blockchain)是比特币的一个重要概念,它本质上是一个去中心化的数据库,同时作为比特币的底层技术。区块链是一串使用密码学方法相关联产生的数据块,每...

    周俊辉
  • 智能合约初探:概念与演变

    自2009年比特币开启区块链时代以来,近10年里,随着技术与生态的发展,基于区块链的分布式应用(dapp)呈现出井喷的趋势,而支撑着dapp的底层技术就是“区块...

    区块链大本营
  • 关于直播系统和短视频系统安卓手机屏幕适配的方向思路

    直播与短视频的接踵而至,将互联网推向了网红经济时代,而智能手机的更新迭代为二者的发展提供了“温床”。但随着Android机型的增多,设备碎片化的程度也在不断加深...

    q3557873521
  • 一个Java小白通向数据结构算法之旅(6) - 插入排序

    用户2032165
  • 现在做 Web 全景合适吗?

    Web 全景在以前带宽有限的条件下常常用来作为街景和 360° 全景图片的查看。它可以给用户一种 self-immersive 的体验,通过简单的操作,自由的查...

    企鹅号小编

扫码关注云+社区

领取腾讯云代金券