天天看点

workman定时任务队列雏形

    最近一段时间在折腾workman,配置以及相关的grpc,rgpc等协议,看的现在还是云里雾里,只觉得还不错,优化的速度会更加的上升。

   这篇文章主要不是分享协议等内容,而是花了些时间去配置的workman定时任务队列,在之前同时的一个建议,说是能不能把crontab的任务队列能够像用户列表的形式显示出来,当时受到技术的瓶颈,没有办法,后面在查阅相关的文章的时候,发现workman技术文档中有个crontab的任务队列,看一些举例,原来是可以的,那么我最近就在折腾这么一块,

   作用,运用场景:

        假设你有一千个用户或者一千个订单需要售后的自动告诉用户,你的订单已经到货了,你还没验收,那顾客忘了这件事怎么办呢?一千个/一万个订单,不可能一个个电话去打吧?所以就可以定时任务

  区别:定时任务可以设置linux的crontab,可以不选择workman+crontab,

  愿景:每个功能,都有一个愿景,而我之所以做这个操作的原因是想做好配置,相当于每个时间段做什么事情,new 新的crontab 的任务,而定时任务自动的去操作。

当然上述是我做这个的初衷和同事偶然间的一个需求

 具体操作:

我是按照webman的文档链接进行操作,

   但并不是全部都用,只是模仿,因为我用的是nignx服务器+thinkphp5.1框架,

  composer安装

composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
composer require workerman/crontab
           

 完成之后你的配置composer.json文件会多出

"require": {
        "workerman/crontab": "^1.0"
    },
           

👆

那继续的是有个进程任务开启,

在根目录下面可以建立crontab.php

<?php

    use Workerman\Worker;
    use Workerman\Crontab\Crontab; //引入定时任务
    require_once __DIR__ . '/vendor/autoload.php';
    $worker = new Worker();
    date_default_timezone_set('PRC');

    $worker->onWorkerStart = function () {
        // Execute the function in the first second of every minute. 新的一个任务
       new Crontab('1 * * * * *', function(){
            //处理的业务逻辑

        });
        $crontab->destroy();
    };


    Worker::runAll();
           

 最后如果需要修改,最好的是两个同时关闭,第一个关闭命令 php crontab.php stop,然后是workman的进程命令,或者重启

下面就是我的开启命令👇 

workman定时任务队列雏形

那最后,我只是做了一个模型,到时候需要进行foreach循环还在研究操作。

谢谢,希望对看到这篇文章的朋友有帮助

继续阅读