“队列”第二回——曲苑杂坛

三种监听方式

1. php artisan queue:work

只执行一次,只等待三秒,也就是说,如果有任务,执行一个后退出,如果没任务,三秒之后也退出

2. php artisan queue:listen

不退出,持续监听队列请求,每有一个新任务,就初始化框架,处理任务

3. php artisan queue:work --daemon

不退出,持续监听队列请求,只是不像 listen 一样每次都重新初始化整个框架,而是复用内存里已有的处理进程,性能更高。

缺点是修改了处理队列的代码后,需要手动重启这个进程以重新初始化框架。

Supervisor

我使用的线上配置文件如下:

/etc/supervisord.d/laravel-queue.conf

[program:laravel-queue]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/xxx/artisan queue:work --daemon --tries=20
autostart=true
autorestart=true
user=apache
numprocs=1 // 监听的进程数量,用于并发处理任务
redirect_stderr=true
stdout_logfile=/var/www/xxx/storage/logs/queue.log

监听的进程增加几个可以大幅提升任务处理效率,但是会增加无任务时的负载,请根据负载情况进行调整。

启动 Supervisor

supervisord -c /etc/supervisord.conf

接下来他就会自动开始处理队列啦。

WRITTEN BY

avatar
标签: 队列
2017.5.13   /   热度:631   /   分类: Laravel 进阶

评论:

xiaobo
2017-07-19 16:34
你好久没有更新啦。。。

发表评论:

© 2011-2017 岁寒  |  Powered by Emlog