<?php 
 | 
  
 | 
class Task_MQ_Redis implements Task_MQ { 
 | 
  
 | 
    protected $redisCache; 
 | 
  
 | 
    public function __construct(PhalApi_Cache_Redis $redisCache= NULL) { 
 | 
        if ($redisCache === NULL) { 
 | 
            $config = DI()->config->get('app.Task.mq.redis'); 
 | 
  
 | 
            if (!isset($config['host'])) { 
 | 
                $config['host'] = '127.0.0.1'; 
 | 
            } 
 | 
            if (!isset($config['port'])) { 
 | 
                $config['port'] = 6379; 
 | 
            } 
 | 
            if (!isset($config['prefix'])) { 
 | 
                $config['prefix'] = 'phalapi_task'; 
 | 
            } 
 | 
  
 | 
            $redisCache = new PhalApi_Cache_Redis($config); 
 | 
        } 
 | 
  
 | 
        $this->redisCache = $redisCache; 
 | 
    } 
 | 
  
 | 
    public function add($service, $params = array()) { 
 | 
        $num = $this->redisCache->rPush($service, $params); 
 | 
  
 | 
        return $num > 0 ? TRUE : FALSE; 
 | 
    } 
 | 
  
 | 
    public function pop($service, $num = 1) { 
 | 
        $rs = array(); 
 | 
  
 | 
        while($num > 0) { 
 | 
            $params = $this->redisCache->lPop($service); 
 | 
  
 | 
            if ($params === NULL) { 
 | 
                break; 
 | 
            } 
 | 
  
 | 
            $rs[] = $params; 
 | 
  
 | 
            $num--; 
 | 
        } 
 | 
  
 | 
        return $rs; 
 | 
    } 
 | 
} 
 |