MediaWiki
master
|
Helper class to manage Redis connections. More...
Public Member Functions | |
__destruct () | |
Make sure connections are closed for sanity. More... | |
freeConnection ($server, Redis $conn) | |
Mark a connection to a server as free to return to the pool. More... | |
getConnection ($server) | |
Get a connection to a redis server. More... | |
handleError (RedisConnRef $cref, RedisException $e) | |
The redis extension throws an exception in response to various read, write and protocol errors. More... | |
handleException ($server, RedisConnRef $cref, RedisException $e) | |
The redis extension throws an exception in response to various read, write and protocol errors. More... | |
reauthenticateConnection ($server, Redis $conn) | |
Re-send an AUTH request to the redis server (useful after disconnects). More... | |
resetTimeout (Redis $conn, $timeout=null) | |
Adjust or reset the connection handle read timeout value. More... | |
setLogger (LoggerInterface $logger) | |
Static Public Member Functions | |
static | destroySingletons () |
Destroy all singleton() instances. More... | |
static | singleton (array $options) |
Public Attributes | |
const | SERVER_DOWN_TTL = 30 |
integer; seconds to cache servers as "down". More... | |
Protected Member Functions | |
__construct (array $options) | |
closeExcessIdleConections () | |
Close any extra idle connections if there are more than the limit. More... | |
Static Protected Member Functions | |
static | applyDefaultConfig (array $options) |
Protected Attributes | |
array | $connections = [] |
(server name => ((connection info array),...) More... | |
array | $downServers = [] |
(server name => UNIX timestamp) More... | |
int | $idlePoolSize = 0 |
Current idle pool size. More... | |
LoggerInterface | $logger |
Pool settings. | |
Settings there are shared for any connection made in this pool. See the singleton() method documentation for more details. | |
string | $connectTimeout |
Connection timeout in seconds. More... | |
string | $readTimeout |
Read timeout in seconds. More... | |
string | $password |
Plaintext auth password. More... | |
bool | $persistent |
Whether connections persist. More... | |
int | $serializer |
Serializer to use (Redis::SERIALIZER_*) More... | |
Static Protected Attributes | |
static array | $instances = [] |
(pool ID => RedisConnectionPool) More... | |
Helper class to manage Redis connections.
This can be used to get handle wrappers that free the handle when the wrapper leaves scope. The maximum number of free handles (connections) is configurable. This provides an easy way to cache connection handles that may also have state, such as a handle does between multi() and exec(), and without hoarding connections. The wrappers use PHP magic methods so that calling functions on them calls the function of the actual Redis object handle.
Definition at line 42 of file RedisConnectionPool.php.
|
protected |
array | $options |
Exception |
Definition at line 84 of file RedisConnectionPool.php.
References setLogger().
RedisConnectionPool::__destruct | ( | ) |
Make sure connections are closed for sanity.
Definition at line 418 of file RedisConnectionPool.php.
References as.
|
staticprotected |
array | $options |
Definition at line 121 of file RedisConnectionPool.php.
References $options.
|
protected |
Close any extra idle connections if there are more than the limit.
Definition at line 315 of file RedisConnectionPool.php.
References as.
Referenced by freeConnection().
|
static |
Destroy all singleton() instances.
Definition at line 173 of file RedisConnectionPool.php.
Referenced by ForkController\prepareEnvironment().
RedisConnectionPool::freeConnection | ( | $server, | |
Redis | $conn | ||
) |
Mark a connection to a server as free to return to the pool.
string | $server | |
Redis | $conn |
Definition at line 296 of file RedisConnectionPool.php.
References $idlePoolSize, as, and closeExcessIdleConections().
RedisConnectionPool::getConnection | ( | $server | ) |
Get a connection to a redis server.
Based on code in RedisBagOStuff.php.
string | $server | A hostname/port combination or the absolute path of a UNIX socket. If a hostname is specified but no port, port 6379 will be used. |
MWException |
Definition at line 185 of file RedisConnectionPool.php.
References $e, $idlePoolSize, as, false, list, and IP\splitHostAndPort().
RedisConnectionPool::handleError | ( | RedisConnRef | $cref, |
RedisException | $e | ||
) |
The redis extension throws an exception in response to various read, write and protocol errors.
Sometimes it also closes the connection, sometimes not. The safest response for us is to explicitly destroy the connection object and let it be reopened during the next request.
RedisConnRef | $cref | |
RedisException | $e |
Definition at line 356 of file RedisConnectionPool.php.
References as, RedisConnRef\getServer(), and RedisConnRef\isConnIdentical().
Referenced by handleException().
RedisConnectionPool::handleException | ( | $server, | |
RedisConnRef | $cref, | ||
RedisException | $e | ||
) |
The redis extension throws an exception in response to various read, write and protocol errors.
Sometimes it also closes the connection, sometimes not. The safest response for us is to explicitly destroy the connection object and let it be reopened during the next request.
string | $server | |
RedisConnRef | $cref | |
RedisException | $e |
Definition at line 343 of file RedisConnectionPool.php.
References handleError().
RedisConnectionPool::reauthenticateConnection | ( | $server, | |
Redis | $conn | ||
) |
Re-send an AUTH request to the redis server (useful after disconnects).
This works around an upstream bug in phpredis. phpredis hides disconnects by transparently reconnecting, but it neglects to re-authenticate the new connection. To the user of the phpredis client API this manifests as a seemingly random tendency of connections to lose their authentication status.
This method is for internal use only.
string | $server | |
Redis | $conn |
Definition at line 390 of file RedisConnectionPool.php.
RedisConnectionPool::resetTimeout | ( | Redis | $conn, |
$timeout = null |
|||
) |
Adjust or reset the connection handle read timeout value.
Redis | $conn | |
int | $timeout | Optional |
Definition at line 411 of file RedisConnectionPool.php.
RedisConnectionPool::setLogger | ( | LoggerInterface | $logger | ) |
LoggerInterface | $logger |
Definition at line 113 of file RedisConnectionPool.php.
References $logger.
Referenced by __construct().
|
static |
array | $options | $options include:
|
Definition at line 153 of file RedisConnectionPool.php.
References $options, and serialize().
Referenced by JobQueueAggregatorRedis\__construct(), RedisBagOStuff\__construct(), RedisLockManager\__construct(), PoolCounterRedis\__construct(), JobQueueRedis\__construct(), and RedisPubSubFeedEngine\send().
|
protected |
(server name => ((connection info array),...)
Definition at line 65 of file RedisConnectionPool.php.
|
protected |
Connection timeout in seconds.
Definition at line 50 of file RedisConnectionPool.php.
|
protected |
(server name => UNIX timestamp)
Definition at line 67 of file RedisConnectionPool.php.
|
protected |
Current idle pool size.
Definition at line 62 of file RedisConnectionPool.php.
Referenced by freeConnection(), and getConnection().
|
staticprotected |
(pool ID => RedisConnectionPool)
Definition at line 70 of file RedisConnectionPool.php.
|
protected |
Definition at line 78 of file RedisConnectionPool.php.
Referenced by setLogger().
|
protected |
Plaintext auth password.
Definition at line 54 of file RedisConnectionPool.php.
|
protected |
Whether connections persist.
Definition at line 56 of file RedisConnectionPool.php.
|
protected |
Read timeout in seconds.
Definition at line 52 of file RedisConnectionPool.php.
|
protected |
Serializer to use (Redis::SERIALIZER_*)
Definition at line 58 of file RedisConnectionPool.php.
const RedisConnectionPool::SERVER_DOWN_TTL = 30 |
integer; seconds to cache servers as "down".
Definition at line 73 of file RedisConnectionPool.php.