123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- <?php
- /**
- * for redis implement
- */
- namespace app\common\util\QueueHelp;
- class RedisQueue {
- public function __construct($config) {
- $this->redis = new \Redis();
- $this->redis->connect(env('redis.hostname'), env('redis.hostport'));
- $this->redis->auth(env('redis.password'));
- $this->redis->select($config['db']);
- }
- function push($queue, $obj)
- {
- if (!$queue || !is_object($obj)) {
- return array('ack'=>false, 'msg'=>'parameter error');
- }
- if ($this->redis) {
- $ack = $this->redis->rpush($queue, json_encode($obj));
- $ack = ($ack>0)?true:false;
- $msg = ($ack)?'ok':'redis push fail';
- } else {
- $ack = false;
- $msg = 'redis not support';
- }
- return array('ack'=>$ack, 'msg'=>$msg);
- }
-
- function queueSize($queue)
- {
- if (!$queue){
- return array('ack'=>false, 'msg'=>'parameter error');
- }
- if ($this->redis){
- $size = $this->redis->llen($queue);
- $ack = true;
- $msg = 'ok';
- }else{
- $ack = false;
- $msg = 'redis not support';
- $size = -1;
- }
- return array('ack'=>$ack, 'msg'=>$msg, 'data'=>$size);
- }
-
- function pull($queue)
- {
- $req = new \stdClass();
- if ($this->redis) {
- $ack = false;
- $data = $this->redis->lpop($queue);
- if ($data) {
- $ack = true;
- }
- $req = json_decode($data);
- $msg = ($ack)?'ok':'redis pull fail';
- } else {
- $ack = false;
- $msg = 'redis not support';
- }
- return array('ack'=>$ack, 'msg'=>$msg, 'data'=>$req);
- }
- }
|