MemcachedHandler
extends SaveHandler
in package
Class MemcachedHandler.
Table of Contents
- $config : array<string|int, mixed>
- The configurations used by the save handler.
- $fingerprint : string
- The current data fingerprint.
- $lockId : false|string
- The lock id or false if is not locked.
- $logger : Logger|null
- The Logger instance or null if it was not set.
- $memcached : Memcached|null
- $sessionExists : bool
- Tells if the session exists (if was read).
- $sessionId : string|null
- The current session ID.
- __construct() : mixed
- SessionSaveHandler constructor.
- close() : bool
- Close the session.
- destroy() : bool
- Destroy a session.
- gc() : false|int
- Cleanup old sessions.
- getConfig() : array<string, mixed>
- getMemcached() : Memcached|null
- open() : bool
- Initialize the session.
- read() : string
- Read session data.
- setMemcached() : static
- updateTimestamp() : bool
- Update the timestamp of a session.
- validateId() : bool
- Validate session id.
- write() : bool
- Write session data.
- getExpiration() : int
- Get expiration as a timestamp.
- getIP() : string
- Get the remote IP address.
- getKey() : string
- Get a key for Memcached, using the optional prefix, match IP and match User-Agent configs.
- getKeySuffix() : string
- getMaxlifetime() : int
- Get the maxlifetime (TTL) used by cache handlers or locking.
- getUA() : string
- Get the HTTP User-Agent.
- hasSameFingerprint() : bool
- Tells if the data has the same current fingerprint.
- lock() : bool
- Acquire a lock for a session id.
- log() : void
- Log a message if the Logger is set.
- prepareConfig() : void
- Prepare configurations to be used by the MemcachedHandler.
- setFingerprint() : void
- Set the data fingerprint.
- unlock() : bool
- Unlock the current session lock id.
Properties
$config
The configurations used by the save handler.
protected
array<string|int, mixed>
$config
$fingerprint
The current data fingerprint.
protected
string
$fingerprint
$lockId
The lock id or false if is not locked.
protected
false|string
$lockId
= false
$logger
The Logger instance or null if it was not set.
protected
Logger|null
$logger
$memcached
protected
Memcached|null
$memcached
$sessionExists
Tells if the session exists (if was read).
protected
bool
$sessionExists
= false
$sessionId
The current session ID.
protected
string|null
$sessionId
Methods
__construct()
SessionSaveHandler constructor.
public
__construct([array<string, mixed> $config = [] ][, Logger|null $logger = null ]) : mixed
Parameters
- $config : array<string, mixed> = []
- $logger : Logger|null = null
Return values
mixed —close()
Close the session.
public
close() : bool
Return values
bool —Returns TRUE on success, FALSE on failure
destroy()
Destroy a session.
public
destroy(mixed $id) : bool
Parameters
- $id : mixed
-
The session ID being destroyed
Return values
bool —Returns TRUE on success, FALSE on failure
gc()
Cleanup old sessions.
public
gc(mixed $max_lifetime) : false|int
Parameters
- $max_lifetime : mixed
-
Sessions that have not updated for the last $maxLifetime seconds will be removed
Return values
false|int —Returns the number of deleted session data for success, false for failure
getConfig()
public
getConfig() : array<string, mixed>
Return values
array<string, mixed> —getMemcached()
public
getMemcached() : Memcached|null
Return values
Memcached|null —open()
Initialize the session.
public
open(mixed $path, mixed $name) : bool
Parameters
- $path : mixed
-
The path where to store/retrieve the session
- $name : mixed
-
The session name
Return values
bool —Returns TRUE on success, FALSE on failure
read()
Read session data.
public
read(mixed $id) : string
Parameters
- $id : mixed
-
The session id to read data for
Return values
string —Returns an encoded string of the read data. If nothing was read, it returns an empty string
setMemcached()
public
setMemcached(Memcached $memcached) : static
Parameters
- $memcached : Memcached
Return values
static —updateTimestamp()
Update the timestamp of a session.
public
updateTimestamp(mixed $id, mixed $data) : bool
Parameters
- $id : mixed
-
The session id
- $data : mixed
-
The encoded session data. This data is the result of the PHP internally encoding the $_SESSION superglobal to a serialized string and passing it as this parameter.
NOTE: Sessions can use an alternative serialization method
Return values
bool —Returns TRUE on success, FALSE on failure
validateId()
Validate session id.
public
validateId(string $id) : bool
Parameters
- $id : string
-
The session id
Tags
Return values
bool —Returns TRUE if the id is valid, otherwise FALSE
write()
Write session data.
public
write(mixed $id, mixed $data) : bool
Parameters
- $id : mixed
-
The session id
- $data : mixed
-
The encoded session data. This data is the result of the PHP internally encoding the $_SESSION superglobal to a serialized string and passing it as this parameter.
NOTE: Sessions can use an alternative serialization method
Return values
bool —Returns TRUE on success, FALSE on failure
getExpiration()
Get expiration as a timestamp.
protected
getExpiration(int $seconds) : int
Useful for Time To Live greater than a month (60*60*24*30
).
Parameters
- $seconds : int
Tags
Return values
int —getIP()
Get the remote IP address.
protected
getIP() : string
Return values
string —getKey()
Get a key for Memcached, using the optional prefix, match IP and match User-Agent configs.
protected
getKey(string $id) : string
NOTE: The max key length allowed by Memcached is 250 bytes.
Parameters
- $id : string
-
The session id
Return values
string —The final key
getKeySuffix()
protected
getKeySuffix() : string
Return values
string —getMaxlifetime()
Get the maxlifetime (TTL) used by cache handlers or locking.
protected
getMaxlifetime() : int
NOTE: It will use the maxlifetime
config or the ini value of
session.gc_maxlifetime
as fallback.
Return values
int —The maximum lifetime of a session in seconds
getUA()
Get the HTTP User-Agent.
protected
getUA() : string
Return values
string —hasSameFingerprint()
Tells if the data has the same current fingerprint.
protected
hasSameFingerprint(string $data) : bool
Parameters
- $data : string
-
The data to compare
Return values
bool —True if the fingerprints are the same, otherwise false
lock()
Acquire a lock for a session id.
protected
lock(string $id) : bool
Parameters
- $id : string
-
The session id
Return values
bool —Returns TRUE on success, FALSE on failure
log()
Log a message if the Logger is set.
protected
log(string $message[, LogLevel $level = LogLevel::ERROR ]) : void
Parameters
- $message : string
-
The message to log
- $level : LogLevel = LogLevel::ERROR
-
The log level
Return values
void —prepareConfig()
Prepare configurations to be used by the MemcachedHandler.
protected
prepareConfig(array<string, mixed> $config) : void
Parameters
- $config : array<string, mixed>
-
Custom configs
The custom configs are:
$configs = [ // A custom prefix prepended in the keys 'prefix' => '', // A list of Memcached servers 'servers' => [ [ 'host' => '127.0.0.1', // host always is required 'port' => 11211, // port is optional, default to 11211 'weight' => 0, // weight is optional, default to 0 ], ], // An associative array of Memcached::OPT_* constants 'options' => [ Memcached::OPT_BINARY_PROTOCOL => true, ], // Maximum attempts to try lock a session id 'lock_attempts' => 60, // Interval between the lock attempts in microseconds 'lock_sleep' => 1_000_000, // TTL to the lock (valid for the current session only) 'lock_ttl' => 600, // The maxlifetime (TTL) used for cache item expiration 'maxlifetime' => null, // Null to use the ini value of session.gc_maxlifetime // Match IP? 'match_ip' => false, // Match User-Agent? 'match_ua' => false, ];
Return values
void —setFingerprint()
Set the data fingerprint.
protected
setFingerprint(string $data) : void
Parameters
- $data : string
-
The data to set the new fingerprint
Return values
void —unlock()
Unlock the current session lock id.
protected
unlock() : bool
Return values
bool —Returns TRUE on success, FALSE on failure