Blogger Information
Blog 21
fans 0
comment 0
visits 21114
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
php-laravel的队列实现
星辰大海
Original
853 people have browsed it

队列的目的:将耗时的任务延时处理。

队列的优点:异步、重试。

队列驱动:database、redis、sync...

使用队列的流程:(以redis为例)

  1. 装扩展

    在composer.json文件中的require项,添加以下扩展,并执行composer update,安装扩展。

       TIM图片20170921202514.png

   2. 引入RedisServiceProvider服务,在bootstrap/app.php中添加以下代码:

            $app->register('Illuminate\Redis\RedisServiceProvider');

   3. 配置redis,在config/database.php中添加以下配置项:

       TIM图片20170921202339.png

    4. 修改queue的驱动类型,config/queue.php中将default项改为redis;

    5. 如需可定义queue的名字,默认为default;

    6. 如需,可自定义队列失败表

        TIM截图20171122164543.jpg

        失败表字段:

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

    


Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post