博客列表 >php-laravel的队列实现

php-laravel的队列实现

星辰大海
星辰大海原创
2017年09月21日 20:31:56843浏览

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

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

队列驱动: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 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议