laravel-队列配置

php artisan make:job 文件名称 创建队列
php artisan queue:work --daemon 启动且监听
php artisan queue:work --queue={GeneratePdfReport} 消耗一次队列
php artisan queue:restart 重启队列
生成文件修改:

class GeneratePdfReport implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    /**
     * 任务运行的超时时间。
     *
     * 置时间必须小于默认时间 ,默认 90秒
     * @var int
     */
    public $timeout = 70;

    /**
     * 任务最大尝试次数。
     *
     * @var int
     */
    public $tries = 5;

    /***
     * 报告ID
     * @var
     */
    protected $report_id;

    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct($report_id)
    {
        $this->report_id = $report_id;
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        //调用消费的方法
        xxxxxx::xxx($id);
    }
}

调用方法:

//插入队列,延迟1分钟执行
dispatch(new GeneratePdfReport($id))->delay(Carbon::now()->addMinutes(1));

supervisor 进程管理 安装按照laravel文档即可
1、cd /etc/supervisor 进入服务监控配置文件目录
2、vim supervisord.conf 添加下面代码块

[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

3、cd ./conf.d 进入配置目录 vim dingxiang-pdf-worker.conf 添加下面代码(需要看下,command与stdout_logfile目录更换为自己的)

[program:dingxiang-pdf-worker]
process_name=%(program_name)s_%(process_num)02d
command=/usr/local/bin/php 项目路径/artisan queue:work redis --sleep=3 --daemon
autostart=true
autorestart=true
user=root
numprocs=8
redirect_stderr=true
stdout_logfile=项目路径/storage/logs/worker.log

4、sudo killall supervisord 关闭所有进程
5、supervisord -c /etc/supervisor/supervisord.conf 重新启动并载入新的配置
6、supervisorctl status 查看管理进程状态(所有配置文件名称存在即可)
https://blog.51cto.com/sf1314/2128372?utm_source=oschina-app 错误举例

你可能感兴趣的:(laravel-队列配置)