php and message queues implemented redis

 php + Redis message queue is a time of between php + mysql insufficient performance intermediate processing scheme. By the middle of the process to ensure data availability and accuracy. The server requests for large moment, the pressure is large database. As a result of concurrent oversold large, resulting in a large amount of concurrent data duplication.

        Process: php accept requests and data -> php redis write data queue (enqueue) -> shell timing of writing data read queue call php MySQL (dequeued)

        Implementation code:

Into the team: inqueue.php

php
  1. <?php
  2. $redis = new redis();
  3. $redis->connect('127.0.0.1',6379);
  4. $redis -> select('1');
  5. $redis->auth('');
  6.  
  7. Data $  = [ A , B , C , D , E , F , G , H ]; // this may be get or post requests over the data  
  8. $data = json_encode($data);
  9. $in = $redis->rpush('queue',$data);
  10. if($in){
  11.     echo  "into team success" ;
  12. }

A team: outqueue.php

php
  1. #!/usr/bin/php
  2. <?php
  3. $redis = new redis();
  4. $redis->connect('127.0.0.1',6379);
  5. $redis -> select('1');
  6. $redis->auth('');
  7.  
  8. $value = $redis->lpop('queue');
  9. $value = json_decode($value,true);

shell process.sh: regular script calls outqueue.php

php
  1. # Be called once per minute
  2. * * * * * /usr/local/nginx/html/process.sh
php
  1. #!/bin/bash
  2. #file_name : process.sh
  3. #author: zuoping
  4. php /usr/local/nginx/html/outqueue.php

* If you call every minute frequency is not enough, you can call the script executed multiple times, such as:

php
  1. #!/bin/bash
  2. #file_name : process.sh
  3. #author: zuoping
  4. php /usr/local/nginx/html/outqueue.php
  5. php /usr/local/nginx/html/outqueue.php
  6. php /usr/local/nginx/html/outqueue.php
  7. php /usr/local/nginx/html/outqueue.php
  8. php /usr/local/nginx/html/outqueue.php
  9. php /usr/local/nginx/html/outqueue.php
  10. php /usr/local/nginx/html/outqueue.php
  11. php /usr/local/nginx/html/outqueue.php
  12. php /usr/local/nginx/html/outqueue.php
  13. php /usr/local/nginx/html/outqueue.php
  14. php /usr/local/nginx/html/outqueue.php
  15. # This one minute call many times.

View current data in the queue:

php
  1. <?php
  2. $redis = new redis();
  3. $redis->connect('127.0.0.1',6379);
  4. $redis -> select('1');
  5. $redis->auth('');
  6.  
  7. $list = $redis->lrange('queue',0,-1);
  8. var_dump ( $ list );
 

Guess you like

Origin www.cnblogs.com/bluealine/p/11039414.html