示例#1
0
 public static function backend()
 {
     if (empty(self::$_backendInstance)) {
         switch (self::$_backend) {
             case 'memcache':
                 require_once dirname(__FILE__) . '/Backend/Memcache.php';
                 $options = array('prefix' => self::$_prefix);
                 if (!empty(self::$_servers)) {
                     $options['servers'] = self::$_servers;
                 }
                 self::$_backendInstance = new Bouncer_Backend_Memcache($options);
                 break;
             case 'redis':
             case 'phpredis':
                 $options = array('namespace' => self::$_prefix);
                 if (!empty(self::$_servers)) {
                     $options['servers'] = array();
                     foreach (self::$_servers as $host) {
                         if (strpos($host, '@')) {
                             list($password, $host) = explode('@', $host);
                             if (strpos($password, ':')) {
                                 list($username, $password) = explode(':', $password);
                             }
                         }
                         $port = 6379;
                         if (strpos($host, ':')) {
                             list($host, $port) = explode(':', $host);
                         }
                         $timeout = 1;
                         $readTimeout = 1;
                         $options['servers'][] = compact('host', 'port', 'username', 'password', 'timeout', 'readTimeout');
                     }
                 }
                 if (self::$_backend == 'phpredis') {
                     require_once dirname(__FILE__) . '/Backend/PhpRedis.php';
                     self::$_backendInstance = new Bouncer_Backend_PhpRedis($options);
                 } else {
                     require_once dirname(__FILE__) . '/Backend/Redis.php';
                     self::$_backendInstance = new Bouncer_Backend_Redis($options);
                 }
                 break;
         }
     }
     return self::$_backendInstance;
 }