前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Easyswoole下Crontab定时器如何实现奇偶数时间分别运行不用的定时任务

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

作者头像
北溟有鱼QAQ
发布2020-03-06 17:20:44
1.3K0
发布2020-03-06 17:20:44
举报
文章被收录于专栏:北溟有鱼QAQ北溟有鱼QAQ

Easyswoole中的定时器

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

cron通用表达式

代码语言:javascript
复制
    *    *    *    *    *
    -    -    -    -    -
    |    |    |    |    |
    |    |    |    |    |
    |    |    |    |    +----- day of week (0 - 7) (Sunday=0 or 7)
    |    |    |    +---------- month (1 - 12)
    |    |    +--------------- day of month (1 - 31)
    |    +-------------------- hour (0 - 23)
    +------------------------- min (0 - 59)

cron特殊表达式

代码语言:javascript
复制
@yearly                    每年一次 等同于(0 0 1 1 *) 
@annually                  每年一次 等同于(0 0 1 1 *)
@monthly                   每月一次 等同于(0 0 1 * *) 
@weekly                    每周一次 等同于(0 0 * * 0) 
@daily                     每日一次 等同于(0 0 * * *) 
@hourly                    每小时一次 等同于(0 * * * *)

奇数时间定时任务

代码语言:javascript
复制
<?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();
    }
}

偶数时间定时任务

代码语言:javascript
复制
<?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();
    }
}

添加定时计划

代码语言:javascript
复制
   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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-03-05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Easyswoole中的定时器
    • cron通用表达式
      • cron特殊表达式
        • 奇数时间定时任务
          • 偶数时间定时任务
            • 添加定时计划
              • 运行 php easyswoole start 即可,效果图如下
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档