Browse Source

cleanup MemCache timeout API after #804

use milliseconds only and fall back to seconds for older memcache
versions.
tags/2.0.0-beta
Carsten Brandt 11 years ago
parent
commit
8beadc91f4
  1. 9
      framework/yii/caching/MemCache.php
  2. 16
      framework/yii/caching/MemCacheServer.php

9
framework/yii/caching/MemCache.php

@ -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 {

16
framework/yii/caching/MemCacheServer.php

@ -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
*/ */
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 fail over 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;
} }

Loading…
Cancel
Save