博主信息
博文 21
粉丝 0
评论 0
访问量 25922
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
php-laravel的队列实现
星辰大海
原创
1033人浏览过

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

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

队列驱动: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

    


本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学