예제 #1
0
 public static function createSubscriptions($dbSubscriptions)
 {
     if (!is_array($dbSubscriptions)) {
         $dbSubscriptions = array($dbSubscriptions);
     }
     $result = array();
     foreach ($dbSubscriptions as $dbSubscription) {
         $attributes = $dbSubscription->getAttributes();
         unset($attributes['id']);
         unset($attributes['queue_id']);
         unset($attributes['is_deleted']);
         $subscription = new NfySubscription();
         $subscription->setAttributes($attributes);
         foreach ($dbSubscription->categories as $category) {
             if ($category->is_exception) {
                 $subscription->categories[] = $category->category;
             } else {
                 $subscription->exceptions[] = $category->category;
             }
         }
         $result[] = $subscription;
     }
     return $result;
 }
예제 #2
0
 /**
  * @inheritdoc
  */
 public function subscribe($subscriber_id, $label = null, $categories = null, $exceptions = null)
 {
     if ($this->blocking) {
         if ($exceptions !== null) {
             throw new CException('Not supported. Redis queues does not support pattern exceptions in blocking (pubsub) mode.');
         }
         foreach ($categories as $category) {
             if (($c = rtrim($category, '*')) !== $category) {
                 $this->redis->psubscribe($category);
             } else {
                 $this->redis->subscribe($category);
             }
         }
         return;
     }
     $now = new DateTime('now', new DateTimezone('UTC'));
     $subscription = new NfySubscription();
     $subscription->setAttributes(array('subscriber_id' => $subscriber_id, 'label' => $label, 'categories' => $categories, 'exceptions' => $exceptions !== null ? $exceptions : array(), 'created_on' => $now->format('Y-m-d H:i:s')));
     $this->redis->hset($this->id . self::SUBSCRIPTIONS_HASH, $subscriber_id, serialize($subscription));
 }