“队列”第二回——曲苑杂坛
三种监听方式
以下内容只适用于 Laravel 5.2 及以前,5.2 及之后的版本请直接使用
php artisan queue:work
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
接下来他就会自动开始处理队列啦。
标签: 队列
评论:
2018-09-30 17:59