• php+redis实现消息队列


    php+redis消息队列是php+mysql性能不足时的一个中间间处理方案。通过这个中间的处理,保证的数据的可用性和准确性。用于服务器瞬间请求大,数据库压力大的情况。如并发量大导致的超卖、并发量大导致的数据重复情况。

            流程:php接受请求和数据 -> php把数据写入redis队列中(入队) -> shell定时调用php读取队列数据写入mysql(出队)

            实现代码:

    入队:inqueue.php

    <?php
    $redis = new redis();
    $redis->connect('127.0.0.1',6379);
    $redis -> select('1');
    $redis->auth('');
     
    $data = [a,b,c,d,e,f,g,h]; //这里可以是get或post请求过来的数据
    $data = json_encode($data);
    $in = $redis->rpush('queue',$data);
    if($in){
        echo "入队成功";
    }
    

      

    出队:outqueue.php

    #!/usr/bin/php
    <?php
    $redis = new redis();
    $redis->connect('127.0.0.1',6379);
    $redis -> select('1');
    $redis->auth('');
     
    $value = $redis->lpop('queue');
    $value = json_decode($value,true);
    

      

     

    shell process.sh:定时调用outqueue.php脚本

    #进行每分钟调用一次
    * * * * * /usr/local/nginx/html/process.sh
    
    #!/bin/bash
    #file_name : process.sh
    #author : zuoping
    php /usr/local/nginx/html/outqueue.php
    

      

    *如果每分钟调用一次频率不够,可以执行多次调用脚本,如:

    #!/bin/bash
    #file_name : process.sh
    #author : zuoping
    php /usr/local/nginx/html/outqueue.php
    php /usr/local/nginx/html/outqueue.php
    php /usr/local/nginx/html/outqueue.php
    php /usr/local/nginx/html/outqueue.php
    php /usr/local/nginx/html/outqueue.php
    php /usr/local/nginx/html/outqueue.php
    php /usr/local/nginx/html/outqueue.php
    php /usr/local/nginx/html/outqueue.php
    php /usr/local/nginx/html/outqueue.php
    php /usr/local/nginx/html/outqueue.php
    php /usr/local/nginx/html/outqueue.php
    #这样就一分钟调用了多次了。
    

    查看队列中的当前数据:

    <?php
    $redis = new redis();
    $redis->connect('127.0.0.1',6379);
    $redis -> select('1');
    $redis->auth('');
     
    $list = $redis->lrange('queue',0,-1);
    var_dump($list);
    

      

  • 相关阅读:
    论频谱中负频率成分的物理意义(转载)
    VS2008的glaux库
    通过域名显示IP列表
    Shader errorX3205的解决
    Curl, Divergence, Circulation
    关于FIONREAD命令的作用
    Cairngorm的结构及开发使用(2)(转)
    结合Flex Builder和Flash CS4制作一个中国地图的应用(转)
    大型高并发高负载网站的系统架构(转)
    Cairngorm的结构及开发使用(4)(转)
  • 原文地址:https://www.cnblogs.com/tdalcn/p/10482058.html
Copyright © 2020-2023  润新知