队列的目的:将耗时的任务延时处理。
队列的优点:异步、重试。
队列驱动:database、redis、sync...
使用队列的流程:(以redis为例)
装扩展
在composer.json文件中的require项,添加以下扩展,并执行composer update,安装扩展。
2. 引入RedisServiceProvider服务,在bootstrap/app.php中添加以下代码:
$app->register('Illuminate\Redis\RedisServiceProvider');
3. 配置redis,在config/database.php中添加以下配置项:
4. 修改queue的驱动类型,config/queue.php中将default项改为redis;
5. 如需可定义queue的名字,默认为default;
6. 如需,可自定义队列失败表
失败表字段:
CREATE TABLE `failed_jobs` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', `connection` text comment '驱动', `queue` text comment '队列', `payload` longtext comment '队列', `exception` longtext comment '异常', `failed_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP comment '时间', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 comment '队列失败表';
7. 执行守护进程:php artisan queue:listen --queue='default' --delay=3 --memory=1024 --sleep=3 --tries=3
--timeout=3600
8. 可以消费队列了
注:nginx.conf与cron.conf中的REDIS_SITE_SERVER需统一
清artisan缓存:php artisan cache:clear