diff --git a/README.txt b/README.txt index ace9a96b6823511a04e26b8c46318c8178942263..88685498e788171c5bf429e157216e06edaeb1fa 100644 --- a/README.txt +++ b/README.txt @@ -225,3 +225,26 @@ Other options you could experiment with: reported that this can speed up the Binary protocol (see above). This tells the TCP stack to send packets immediately and without waiting for a full payload, reducing per-packet network latency (disabling "Nagling"). + +It's possible to enable SASL authentication as documented here: + http://php.net/manual/en/memcached.setsaslauthdata.php + https://code.google.com/p/memcached/wiki/SASLHowto + +SASL authentication requires a memcached server with SASL support (version 1.4.3 +or greater built with --enable-sasl and started with the -S flag) and the PECL +memcached client version 2.0.0 or greater also built with SASL support. Once +these requirements are satisfied you can then enable SASL support in the Drupal +memcache module by enabling the binary protocol and setting +memcache_sasl_username and memcache_sasl_password in settings.php. For example: + +$settings['memcache']['sasl'] = [ + 'username' => 'user', + 'password' => 'password', +]; + +// When using SASL, Memcached extension needs to be used +// because Memcache extension doesn't support it. +$settings['memcache']['extension'] = 'Memcached'; +$settings['memcache']['options'] = [ + \Memcached::OPT_BINARY_PROTOCOL => TRUE, +]; diff --git a/src/DrupalMemcached.php b/src/DrupalMemcached.php index 2d3c88b1b01f1ba03923310168a19f8947d8d2e2..7201b0bf80590bdaddc07910dad606d5938c00fd 100644 --- a/src/DrupalMemcached.php +++ b/src/DrupalMemcached.php @@ -32,6 +32,12 @@ class DrupalMemcached extends DrupalMemcacheBase { foreach ($this->settings->get('options', []) as $key => $value) { $this->memcache->setOption($key, $value); } + + // SASL configuration to authenticate with Memcached. + // Note: this only affects the Memcached PECL extension. + if ($sasl_config = $this->settings->get('sasl', [])) { + $this->memcache->setSaslAuthData($sasl_config['username'], $sasl_config['password']); + } } /**