laravel学习(二):队列

提示:参考内容 http://laravelacademy.org/post/3252.html

以本次项目为例 做实现
项目需求:添加会员等级制度 按积分或消费金额等条件升级会员等级 在新建等级的时候需要将符合条件的会员提升到该等级 因为需要异步计算 所以此部分将用队列形式处理 1.新建一个job 如下

class AutoGrade extends Job implements ShouldQueue
{
    use InteractsWithQueue, SerializesModels;
    protected $params;

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

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
	    $ret = (new MemberService())->autoGrade($this->params);
    }
}

因为项目中有对应的一些处理方法 故此直接调用实现那可

2.项目中调用队列

 $job = (new AutoGrade(['type'=>1,'shop_id'=>$this->shopId,'gid'=>$M->id]))->onQueue('auto_grade');
 $ret = dispatch($job);

3.在/etc/supervisor/conf.d 目录下的配置文件中配置 我们项目的配置文件为houtai-dev.conf 这个文件可自己创建配置 添加内容如下

[program:houtai-dev_auto_grade]
process_name=%(program_name)s_%(process_num)02d
command=/usr/local/php7/bin/php /data/wwwroot/management-dev/artisan queue:work --queue=auto_grade --sleep=3 --tries=3 --daemon
autostart=true
autorestart=true
user=root
numprocs=3
redirect_stderr=true
stdout_logfile=/data/wwwroot/management-dev/queue.log

4.启动进程

sudo supervisord -c /etc/supervisord.conf
sudo supervisorctl -c /etc/supervisor/supervisord.conf
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start laravel-worker:*

以上是laravel提供的方式 我们项目有自己的配置管理 使用supervisorctl 命令进入后 在终端输入 reload

5.查看进程是否存在 ps -ef | grep queue

猜你喜欢

转载自my.oschina.net/ives/blog/1816931
今日推荐