getMemcached( $connectionId, $credentials, $options ); if (! $memcached->getServerList()) { // For each server in the array, we'll just extract the configuration and add // the server to the Memcached connection. Once we have added all of these // servers we'll verify the connection is successful and return it back. foreach ($servers as $server) { $memcached->addServer( $server['host'], $server['port'], $server['weight'] ); } } return $memcached; } /** * Get a new Memcached instance. * * @param string|null $connectionId * @param array $credentials * @param array $options * @return \Memcached */ protected function getMemcached($connectionId, array $credentials, array $options) { $memcached = $this->createMemcachedInstance($connectionId); if (count($credentials) === 2) { $this->setCredentials($memcached, $credentials); } if (count($options)) { $memcached->setOptions($options); } return $memcached; } /** * Create the Memcached instance. * * @param string|null $connectionId * @return \Memcached */ protected function createMemcachedInstance($connectionId) { return empty($connectionId) ? new Memcached : new Memcached($connectionId); } /** * Set the SASL credentials on the Memcached connection. * * @param \Memcached $memcached * @param array $credentials * @return void */ protected function setCredentials($memcached, $credentials) { list($username, $password) = $credentials; $memcached->setOption(Memcached::OPT_BINARY_PROTOCOL, true); $memcached->setSaslAuthData($username, $password); } }