• lumen 队列处理


    数据库
    要使用 database 队列驱动,你需要数据表保存任务信息(比如失败任务)。要生成创建这些表的迁移,
    可以在项目目录下运行 Artisan 命令 queue:table,迁移被创建之后,可以使用 migrate 命令生成这些表:
    php artisan make:migration create_jobs_table --create=jobs

    php artisan queue:table
    php artisan queue:failed_jobs

    php artisan migrate

    运行后生成failed_jobs、jobs、migrations三张表。

    队列的配置选项都在 .env 文件中。

    如果您想要完全自定义队列的配置,您必须将 vendor/laravel/lumen-framework/config/queue.php 文件完整的复制到你的项目根目录中的 config 目录,并且要调整必要的配置。如果 config 目录不存在,则要创建。

    .env 中需要修改

    QUEUE_CONNECTION=database

    注意,如果不修改这个配置的话,job 就不会存入数据表,而是同步执行。

    创建Jobs/TestJob.php

    <?php
    
    namespace AppJobs;
    use IlluminateSupportFacadesLog;
    class TestJob extends Job
    {
        protected $str;
        /**
         * Create a new job instance.
         *
         * @return void
         */
        public function __construct($str)
        {
            $this->str=$str;
        }
    
        /**
         * 执行任务
         *
         * @return void
         */
        public function handle()
        {
            echo "hello job";
            Log::info("Job:".$this->str);
        }
    
    
        /**
         * 任务失败的处理过程
         *
         * @param  Exception  $exception
         * @return void
         */
        public function failed(Exception $exception)
        {
            // 给用户发送任务失败的通知,等等……
        }
    }

    在控制里里调用队列

    dispatch(new TestJob('this is job'));

    到这里已经在数据插入到数据库了

    要怎么动行队列里的任务呢

    运行队列处理器

    php artisan queue:work

    Tip:要使 queue:work 进程一直在后台运行,你应该使用进程管理器比如 Supervisor 来确保队列处理器不会停止运行

    配置 Supervisor

    Supervisor 的配置文件通常位于 /etc/supervisor/conf.d 目录下。在该目录中,你可以创建任意数量的配置文件,用来控制 supervisor 将如何监控你的进程。例如,创建一个 laravel-worker.conf 文件使之启动和监控一个 queue:work 进程:

    [program:laravel-worker]
    process_name=%(program_name)s_%(process_num)02d
    command=php /home/forge/app.com/artisan queue:work sqs --sleep=3 --tries=3
    autostart=true
    autorestart=true
    user=forge
    numprocs=8
    redirect_stderr=true
    stdout_logfile=/home/forge/app.com/worker.log

    在这个例子中,numprocs 指令将指定 Supervisor 运行 8 个 queue:work 进程并对其进行监控,如果它们挂掉就自动重启它们。你应该更改 command 选项中的 queue:work sqs 部分以表示你所需的队列连接。

    启动 Supervisor

    配置文件创建完毕后,你就可以使用如下命令更新 Supervisor 配置并启动进程了:

    sudo supervisorctl reread
    
    sudo supervisorctl update
    
    sudo supervisorctl start laravel-worker:*
  • 相关阅读:
    DBAccess
    业务耗时及数组
    QB资料学习.01
    格式化参数
    日志记录.02_线程处理
    nginx 开启gzip
    js 变量提升和函数提升
    js 深拷贝 vs 浅拷贝
    js 伪数组 转 数组
    js 对象原型和原型链
  • 原文地址:https://www.cnblogs.com/vania/p/11867732.html
Copyright © 2020-2023  润新知