提示:参考内容 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