Skip to content

Commit

Permalink
Deprecate MemcacheEngine and update defaults for Memcached
Browse files Browse the repository at this point in the history
People should switch to Memcached instead. The underlying extension is
better maintained and provides improved features and performance.

Collapse the persistent and persistentId settings, while also making
non-persistent connections the default. Persistent connections should be
an opt-in feature as having them enabled by default could go very wrong
on shared hosting environments.
  • Loading branch information
markstory committed Aug 31, 2013
1 parent 9e8c4ad commit 9b0e26c
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 10 deletions.
10 changes: 6 additions & 4 deletions app/Config/core.php
Expand Up @@ -309,18 +309,20 @@
* 'password' => 'password', //plaintext password (xcache.admin.pass)
* ));
*
* Memcache (http://www.danga.com/memcached/)
* Memcached (http://www.danga.com/memcached/)
*
* Uses the memcached extension. See http://php.net/memcached
*
* Cache::config('default', array(
* 'engine' => 'Memcache', //[required]
* 'engine' => 'Memcached', //[required]
* 'duration' => 3600, //[optional]
* 'probability' => 100, //[optional]
* 'prefix' => Inflector::slug(APP_DIR) . '_', //[optional] prefix every cache file with this string
* 'servers' => array(
* '127.0.0.1:11211' // localhost, default port 11211
* ), //[optional]
* 'persistent' => true, // [optional] set this to false for non-persistent connections
* 'compress' => false, // [optional] compress data in Memcache (slower, but uses less memory)
* 'persistent' => 'my_connection', // [optional] The name of the persistent connection.
* 'compress' => false, // [optional] compress data in Memcached (slower, but uses less memory)
* ));
*
* Wincache (http://php.net/wincache)
Expand Down
3 changes: 2 additions & 1 deletion lib/Cake/Cache/Engine/MemcacheEngine.php
Expand Up @@ -24,7 +24,8 @@
* control you have over expire times far in the future. See MemcacheEngine::write() for
* more information.
*
* @package Cake.Cache.Engine
* @package Cake.Cache.Engine
* @deprecated You should use the Memcached adapter instead.
*/
class MemcacheEngine extends CacheEngine {

Expand Down
7 changes: 4 additions & 3 deletions lib/Cake/Cache/Engine/MemcachedEngine.php
Expand Up @@ -46,6 +46,8 @@ class MemcachedEngine extends CacheEngine {
* - servers = string or array of memcached servers, default => 127.0.0.1. If an
* array MemcacheEngine will use them as a pool.
* - compress = boolean, default => false
* - persistent = string The name of the persistent connection. All configurations using
* the same persistent value will share a single underlying connection.
*
* @var array
*/
Expand All @@ -72,8 +74,7 @@ public function init($settings = array()) {
'engine' => 'Memcached',
'servers' => array('127.0.0.1'),
'compress' => false,
'persistent' => true,
'persistentId' => 'mc',
'persistent' => false,
'login' => null,
'password' => null,
);
Expand All @@ -87,7 +88,7 @@ public function init($settings = array()) {
return true;
}

$this->_Memcached = new Memcached($this->settings['persistent'] ? $this->settings['persistentId'] : null);
$this->_Memcached = new Memcached($this->settings['persistent'] ? (string)$this->settings['persistent'] : null);
$this->_setOptions();

if (count($this->_Memcached->getServerList())) {
Expand Down
3 changes: 1 addition & 2 deletions lib/Cake/Test/Case/Cache/Engine/MemcachedEngineTest.php
Expand Up @@ -97,8 +97,7 @@ public function testSettings() {
'duration' => 3600,
'probability' => 100,
'servers' => array('127.0.0.1'),
'persistent' => true,
'persistentId' => 'mc',
'persistent' => false,
'compress' => false,
'engine' => 'Memcached',
'login' => null,
Expand Down

0 comments on commit 9b0e26c

Please sign in to comment.