说明
- 队列配置文件存放在 config/queue.php。
- 每一种队列驱动的配置都可以在该文件中找到, 包括数据库, Beanstalkd, Amazon SQS, Redis, 以及同步(本地使用)驱动。
- 其中还包含了一个null队列驱动用于那些放弃队列的任务。
使用databse驱动
- 修改
.env
中的配置项QUEUE_DRIVER
为database
- 首先要创建数据表来存储任务,
php artisan queue:table
php artisan migrate
- 创建 job 文件,
php artisan make:job SendReminderEmail
- 在 Controller 层
$this->dispatch(new SendRemindEmail())
生产队列,于是database jobs
中记录了最新添加的队列任务 - 单一消费队列
php artisan queue:work
- 依次消费所有队列
php artisan queue:listen
使用beanstalkd驱动
- 安装 beanstalkd:
sudo apt-get install beanstalkd
service beanstalkd start
/usr/bin/beanstalkd -l 127.0.0.1 -p 11300
- 安装其依赖扩展包
composer require pda/pheanstalk
- 依然修改
.env
中的配置项QUEUE_DRIVER
为beanstalkd
- 生产队列后的数据存储在内存中,消费者直接从内存中获取数据消费掉,其命令同上介绍。
- 安装beanstalk-console,如果使用
composer
可执行composer create-project ptrofimov/beanstalk_console -s dev
,如果使用laradock
可直接docker-composer up -d beanstalk-console
使用supervisor驱动
- 安装 supervisor:
sudo apt-get install supervisor
, 也可以去官网下载最新稳定版本 - 编辑新的配置文件
cd /etc/supervisor/conf.d/demo.conf
,配置项模板如下 - 重新读取新的配置文件执行
sudo supervisorctl reread
sudo supervisorctl update
- 启动对应配置项worker执行
sudo supervisorctl start demo:*
[program:demo]
process_name=%(program_name)s_%(process_num)02d
command=php /your-project-path/artisan queue:listen --tries=3
autostart=true
autorestart=true
numprocs=8
redirect_stderr=true
stdout_logfile=/your-project-path/storage/logs/worker.log
写在结尾
Script Maker Day Day Up!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。