Bolt\Provider\SessionServiceProvider::registerRedisHandler PHP Method

registerRedisHandler() protected method

protected registerRedisHandler ( Silex\Application $app )
$app Silex\Application
    protected function registerRedisHandler(Application $app)
    {
        $app['session.handler_factory.backing_redis'] = $app->protect(function ($connections) {
            if (class_exists('Redis')) {
                $redis = new \Redis();
                foreach ($connections as $conn) {
                    $params = [$conn['path'] ?: $conn['host'], $conn['port'], $conn['timeout'] ?: 0];
                    call_user_func_array([$redis, $conn['persistant'] ? 'pconnect' : 'connect'], $params);
                    if (!empty($conn['password'])) {
                        $redis->auth($conn['password']);
                    }
                    if ($conn['database'] > 0) {
                        $redis->select($conn['database']);
                    }
                    if (!empty($conn['prefix'])) {
                        $redis->setOption(\Redis::OPT_PREFIX, $conn['prefix']);
                    }
                }
            } elseif (class_exists('Predis\\Client')) {
                $params = [];
                $options = [];
                foreach ($connections as $conn) {
                    $params[] = $conn;
                    if (!empty($conn['prefix'])) {
                        $options['prefix'] = $conn['prefix'];
                    }
                }
                $redis = new \Predis\Client($params, $options);
            } else {
                throw new \RuntimeException('Neither Redis nor Predis\\Client exist');
            }
            return $redis;
        });
        $app['session.handler_factory.redis'] = $app->protect(function ($options) use($app) {
            $connections = $this->parseConnections($options, 'localhost', 6379);
            $redis = $app['session.handler_factory.backing_redis']($connections);
            return new RedisHandler($redis, $options['gc_maxlifetime']);
        });
    }