Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.
 
 
 
 
 
 

51 řádky
1.1 KiB

  1. <?php
  2. class Task_MQ_Redis implements Task_MQ {
  3. protected $redisCache;
  4. public function __construct(PhalApi_Cache_Redis $redisCache= NULL) {
  5. if ($redisCache === NULL) {
  6. $config = DI()->config->get('app.Task.mq.redis');
  7. if (!isset($config['host'])) {
  8. $config['host'] = '127.0.0.1';
  9. }
  10. if (!isset($config['port'])) {
  11. $config['port'] = 6379;
  12. }
  13. if (!isset($config['prefix'])) {
  14. $config['prefix'] = 'phalapi_task';
  15. }
  16. $redisCache = new PhalApi_Cache_Redis($config);
  17. }
  18. $this->redisCache = $redisCache;
  19. }
  20. public function add($service, $params = array()) {
  21. $num = $this->redisCache->rPush($service, $params);
  22. return $num > 0 ? TRUE : FALSE;
  23. }
  24. public function pop($service, $num = 1) {
  25. $rs = array();
  26. while($num > 0) {
  27. $params = $this->redisCache->lPop($service);
  28. if ($params === NULL) {
  29. break;
  30. }
  31. $rs[] = $params;
  32. $num--;
  33. }
  34. return $rs;
  35. }
  36. }