Commit 8beadc91 by Carsten Brandt

cleanup MemCache timeout API after #804

use milliseconds only and fall back to seconds for older memcache versions.
parent 5311dac9
...@@ -93,8 +93,13 @@ class MemCache extends Cache ...@@ -93,8 +93,13 @@ class MemCache extends Cache
if ($this->useMemcached) { if ($this->useMemcached) {
$cache->addServer($server->host, $server->port, $server->weight); $cache->addServer($server->host, $server->port, $server->weight);
} else { } else {
$cache->addServer($server->host, $server->port, $server->persistent, // $timeout is used for memcache versions that do not have timeoutms parameter
$server->weight, $server->timeout, $server->retryInterval, $server->status, $server->failureCallback, $server->timemoutms); $timeout = (int) ($server->timeout / 1000) + (($server->timeout % 1000 > 0) ? 1 : 0);
$cache->addServer(
$server->host, $server->port, $server->persistent,
$server->weight, $timeout, $server->retryInterval,
$server->status, $server->failureCallback, $server->timeout
);
} }
} }
} else { } else {
......
...@@ -35,9 +35,11 @@ class MemCacheServer extends \yii\base\Object ...@@ -35,9 +35,11 @@ class MemCacheServer extends \yii\base\Object
*/ */
public $persistent = true; public $persistent = true;
/** /**
* @var integer value in seconds which will be used for connecting to the server. This is used by memcache only. * @var integer timeout in milliseconds which will be used for connecting to the server.
* This is used by memcache only. For old versions of memcache that only support specifying
* timeout in seconds this will be rounded up to full seconds.
*/ */
public $timeout = 1; public $timeout = 1000;
/** /**
* @var integer how often a failed server will be retried (in seconds). This is used by memcache only. * @var integer how often a failed server will be retried (in seconds). This is used by memcache only.
*/ */
...@@ -47,14 +49,10 @@ class MemCacheServer extends \yii\base\Object ...@@ -47,14 +49,10 @@ class MemCacheServer extends \yii\base\Object
*/ */
public $status = true; public $status = true;
/** /**
* @var \Closure allows the user to specify a callback function to run upon encountering an error. * @var \Closure this callback function will run upon encountering an error.
* The callback is run before failover is attempted. The function takes two parameters, * The callback is run before fail over is attempted. The function takes two parameters,
* the [[host]] and the [[port]] of the failed server. * the [[host]] and the [[port]] of the failed server.
* This is used by memcache only.
*/ */
public $failureCallback = null; public $failureCallback;
/**
* @var integer value in milliseconds which will be used for connecting to the server.
* Takes precedence over [[timeout]]. This is used by memcache only.
*/
public $timemoutms = 1000;
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment