Queue任务队列

依赖:Swoole1.7.14以上版本
依赖:beanstalkd

1.Queue的使用


    //队列名
    $tube = 'testjob1';
    //具体数据
    $data = '这是第一个队列任务';
    //就这么简单 队列已经被塞入内存
    //$priority, $delaytime, $lifetime 可不填。默认会取配置的参数
    $priority = 1;
    $delaytime = 0;
    $lifetime = 60;

    Queue::put($tube, $data, $priority, $delaytime, $lifetime);

2.配置config/queue.php

<?php
return [

    //异步消息队列的配置
    //分布式
    // 'server' => [
    //     [
    //         'host' => "127.0.0.1",
    //         'port' => 11300
    //     ],
    //     [
    //         'host' => "127.0.0.1",
    //         'port' => 11299
    //     ],
    // ],
    //单机
    'server' => [
        'host' => "127.0.0.1",
        'port' => 11300
    ],

    //log路径
    'log_dir' => 'runtime/queue',

    //tick队列任务的频率,精确到毫秒
    'timer' => 100,

    //类文件缓存
    'class_cache' => 'runtime/queue/bootstrap.class.cache',

    //处理队列任务
    'queue_jobs' => [

        [
            'tube' => 'update_user_info',//队列的名称
            'job'  => 'src\Web\Queue\UpdateUser',//需要执行的任务
            //处理当前队列的进程数
            'task_worker_num' => 10,
        ],
        // [
        //     'tube' => 'testjob3',//队列的名称
        //     'job'  => 'src\Web\Queue\TestJob',//需要执行的任务
        //     //处理当前队列的进程数
        //     'task_worker_num' => 1,
        // ],
        // [
        //     'tube' => 'testjob2',//队列的名称
        //     'job'  => 'src\Web\Queue\TestJob',//需要执行的任务
        //     //处理当前队列的进程数
        //     'task_worker_num' => 2,
        // ]

    ],



    //这里是push到队列是需要用到的参数
    'priority' => 10,//该任务的重要程度,越小优先处理

    //延迟秒数
    'delaytime' => 0,

    //一个任务最多可以执行的秒数
    'lifetime' => 60,

];

3.启动队列服务

  • 开启异步队列服务处理任务
app/queue start|restart|stop
  • 处理任务怎么写
<?php

namespace src\Web\Queue;

use Group\Queue\QueueJob;

class TestJob extends QueueJob
{   
    public function handle()
    {      
        //队列任务的id号
        $jobId = $this -> jobId;
        //你在插入队列时的数据
        $jobData = $this -> jobData;
        //后面就可以写处理的逻辑了
        \Log::info('queue handle job'.$this -> jobId, ['time' => date('Y-m-d H:i:s', time())], 'queue.job');
    }

}

4.队列图形化管理工具beanstalk_console

results matching ""

    No results matching ""