为了账号安全,请及时绑定邮箱和手机立即绑定

PHP消息队列实现及应用

Wicon PHP开发工程师
难度中级
时长 1小时14分
学习人数
综合评分9.73
65人评价 查看评价
9.8 内容实用
9.8 简洁易懂
9.6 逻辑清晰
  • 代码级设计

    秒杀程序把请求写入Redis.(Uid, time_stamp)

    检查Redis已存放数据的长度,超出上限直接丢弃

    死循环处理存入Redis的数据并入库 

    查看全部
    0 采集 收起 来源:Redis

    2018-06-25

  • 程序流程图

    查看全部
    0 采集 收起 来源:.Mysql订单队列

    2018-06-25

  • #!/bin/bashdate "+%G-%m-%d %H:%M:S"cd (good.sh文件地址,如:) /home/pi/Sites/Imooc/queue_mysql/

    php goods.php

    定时任务部署

    crontab -e

    */1 * * * * /home/pi/Sites/Imooc/queue_mysql/good.sh >> home/pi/Sites/Imooc/queue_mysql/log.log 2>&1

    查看全部
    1 采集 收起 来源:.Mysql订单队列

    2018-06-30

  • <?php
    
    include './../include/db.php';
    
    $db = DB::getInstance();
    
    //1先把要处理的记录更新为等待处理
    
    $wating = array('status' => 0);
    
    $lock = array('status' => 2);
    
    $res_lock= $db->update('order_queue', $lock, $waiting, 2);
    
    //2我们要选择出刚刚咱们更新的这些数据结构,然后进行配送系统的处理
    
    if ($res_lock) {
    
        $res = $db->selectAll('order_queue', $lock);
    
        //然后由配货系统进行配货处理
    
        //...
    
        //3 把这些处理过的程序更新为已完成
    
        $success = array(
    
            'status' => 1,
    
            'updated' => date('Y-m-d H:i:s')
    
        );
    
        $res_last = $db->update('order_queue', $success, $lock);
    
        if ($res_last) {
    
            echo 'Success' . $res_last;
    
        } else {
    
            echo 'Fail' . $res_last;
    
        }
    }else{
    
        echo 'ALL FINISHED';
    
    }


    查看全部
    1 采集 收起 来源:.Mysql订单队列

    2018-06-25

  • 队列介质:

    Mysql:可靠性高、易实现,速度慢

    Redis:速度快,单条大消息包时效率低

    消息系统:专业性强、可靠,学习成本高

    查看全部
    0 采集 收起 来源:消息队列.mp4

    2018-06-25

  • 消息处理触发机制:

    死循环读取:易实现,故障时无法及时恢复

    定时任务:压力均分,有处理量上限

    守护进程:类似php-fpm php-cg,需要shell基础

    查看全部
    0 采集 收起 来源:消息队列.mp4

    2018-06-25

  • MQ应用场景:

    冗余、解耦、流量削峰、异步通信、扩展性、排序保证

    查看全部
    0 采集 收起 来源:消息队列.mp4

    2018-06-25

  • 怎么收藏啊
    查看全部
  • 消息队列核心结构:

    业务系统-入队->消息队列-出队->队列处理系统

    应用场景:

    数据冗余

    解耦:(入队系统,出队系统相互独立,互不干涉。)

    查看全部
    0 采集 收起 来源:消息队列.mp4

    2018-06-13

  •  总结:

    在学习该课程后,更多了是初步了解了消息队列的原理和使用场景。

    概念:

     队列结构的中间件

    消息放入后,不需要立即处理

    由订阅者/消费者按顺序处理

    白话文:

    当遇到一个并发非常大的或者耗时非常长的环境的时候,而同时需要立即获取该环境下的结果,消息队列可以比较好的解决这个问题。

    系统结构如下图。


    系统的解耦性还有队列的处理:

    记录入队的id,判断秒杀的产品数量是否大于消息队列的数量,是,该用户入队列。系统即完成入队处理。而另一边即需要做消息入库的处理。此处也是使用了消息队列的解耦性进行处理



    查看全部
    0 采集 收起 来源:消息队列.mp4

    2018-05-26

  • Redis list

    LPUSH/LPUSHX

    RPUSH/RPUSHX

    LPOP

    RPOP

    LTRIM

    LLEN

    LSET

    LINDEX

    LRANGE

    查看全部
    1 采集 收起 来源:Redis

    2018-05-25

  • Nil 只针对对象,而 空对象 不是说不占用空间,相当于一个“洗白”,回到初始状态。
    
    Null 是 空值,是针对指针的,对对象指针和非对象指针都有效,Null不会占用空间。


    查看全部
  • >和>>都是重定向输出
    1> 指标准信息输出路径(也就是默认的输出方式)
    2> 指错误信息输出路径
    2>&1 指将标准信息输出路径指定为错误信息输出路径(也就是都输出在一起)

    1是标准输出
    2是错误输出
    > 和 >> 都是输出重定向符号。标准输出默认是打印到控制台,如果要导入到文件,就需要使用>或>>。> 会覆盖已有的文件内容,而>>会附加到已有内容之后。
    < 和 << 是输入重定向符号。从文件中读取内容。
    2>&1 是把错误输出导入(合并)到标准输出流中

    查看全部
    3 采集 收起 来源:.Mysql订单队列

    2018-04-29

  • 秒杀设计

    查看全部
    0 采集 收起 来源:Redis

    2018-04-06

  • Redis数据类型中的list类型2

    查看全部
    0 采集 收起 来源:Redis

    2018-04-06

举报

0/150
提交
取消
课程须知
1.掌握PHP基础知识 2.使用过Redis技术做缓存 3.有简单的Linux命令基础,如cd、sudo、apt、Vim
老师告诉你能学到什么?
1.队列是个什么东西,他能干什么 2.队列的应用场景有哪些 3.如何使用队列对业务进行解耦 4.如何使用Redis队列来消除高压力 5.专业的队列系统RabbitMQ如何来使用 课程所需库文件:http://pan.baidu.com/s/1bQg038

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!