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; }