12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- <?php
-
- namespace Illuminate\Cache;
-
- use Memcached;
-
- class MemcachedConnector
- {
- /**
- * Create a new Memcached connection.
- *
- * @param array $servers
- * @param string|null $connectionId
- * @param array $options
- * @param array $credentials
- * @return \Memcached
- */
- public function connect(array $servers, $connectionId = null, array $options = [], array $credentials = [])
- {
- $memcached = $this->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);
- }
- }
|