MediaWiki master
MemcachedPhpBagOStuff Class Reference

A wrapper class for the pure-PHP memcached client, exposing a BagOStuff interface. More...

Inherits MemcachedBagOStuff.

Collaboration diagram for MemcachedPhpBagOStuff:

Public Member Functions

 __construct ( $params)
 Available parameters are:
 
- Public Member Functions inherited from MemcachedBagOStuff
 __construct (array $params)
 
 validateKeyEncoding ( $key)
 Ensure that a key is safe to use (contains no control characters and no characters above the ASCII range.)
 
- Public Member Functions inherited from MediumSpecificBagOStuff
 add ( $key, $value, $exptime=0, $flags=0)
 Insert an item if it does not already exist.
 
 changeTTL ( $key, $exptime=0, $flags=0)
 Change the expiration on a key if it exists.
 
 changeTTLMulti (array $keys, $exptime, $flags=0)
 Change the expiration of multiple keys that exist.
 
 delete ( $key, $flags=0)
 Delete an item.
 
 deleteMulti (array $keys, $flags=0)
 Batch deletion.
 
 deleteObjectsExpiringBefore ( $timestamp, callable $progress=null, $limit=INF, string $tag=null)
 Delete all objects expiring before a certain date.
 
 get ( $key, $flags=0)
 Get an item with the given key.
 
 getMulti (array $keys, $flags=0)
 Get an associative array containing the item for each of the keys that have items.
 
 getQoS ( $flag)
 
 getSegmentationSize ()
 
 getSegmentedValueMaxSize ()
 
 incrWithInit ( $key, $exptime, $step=1, $init=null, $flags=0)
 Increase the value of the given key (no TTL change) if it exists or create it otherwise.
 
 lock ( $key, $timeout=6, $exptime=6, $rclass='')
 
 merge ( $key, callable $callback, $exptime=0, $attempts=10, $flags=0)
 Merge changes into the existing cache value (possibly creating a new one)
 
 set ( $key, $value, $exptime=0, $flags=0)
 Set an item.
 
 setMulti (array $valueByKey, $exptime=0, $flags=0)
 Batch insertion/replace.
 
 unlock ( $key)
 Release an advisory lock on a key string.
 
- Public Member Functions inherited from BagOStuff
 clearLastError ()
 Clear the "last error" registry.
 
 getCurrentTime ()
 
 getLastError ( $watchPoint=0)
 Get the "last error" registry.
 
 getLogger ()
 
 getScopedLock ( $key, $timeout=6, $exptime=30, $rclass='')
 Get a lightweight exclusive self-unlocking lock.
 
 getWithSetCallback ( $key, $exptime, $callback, $flags=0)
 Get an item, regenerating and setting it if not found.
 
 isKeyGlobal ( $key)
 Check whether a cache key is in the global keyspace.
 
 makeGlobalKey ( $keygroup,... $components)
 Make a cache key from the given components, in the "global" keyspace.
 
 makeKey ( $keygroup,... $components)
 Make a cache key from the given components, in the default keyspace.
 
 setLogger (LoggerInterface $logger)
 
 setMockTime (&$time)
 
 setNewPreparedValues (array $valueByKey)
 Stage a set of new key values for storage and estimate the amount of bytes needed.
 
 watchErrors ()
 Get a "watch point" token that can be used to get the "last error" to occur after now.
 

Protected Member Functions

 doAdd ( $key, $value, $exptime=0, $flags=0)
 Insert an item if it does not already exist.
 
 doCas ( $casToken, $key, $value, $exptime=0, $flags=0)
 Set an item if the current CAS token matches the provided CAS token.
 
 doChangeTTL ( $key, $exptime, $flags)
 
 doDelete ( $key, $flags=0)
 Delete an item.
 
 doGet ( $key, $flags=0, &$casToken=null)
 Get an item.
 
 doGetMulti (array $keys, $flags=0)
 Get an associative array containing the item for each of the keys that have items.
 
 doIncrWithInitAsync ( $key, $exptime, $step, $init)
 
 doIncrWithInitSync ( $key, $exptime, $step, $init)
 
 doSet ( $key, $value, $exptime=0, $flags=0)
 Set an item.
 
 serialize ( $value)
 
 unserialize ( $value)
 
- Protected Member Functions inherited from MemcachedBagOStuff
 doIncrWithInit ( $key, $exptime, $step, $init, $flags)
 
 fixExpiry ( $exptime)
 
 makeKeyInternal ( $keyspace, $components)
 Format a cache key.
 
 requireConvertGenericKey ()
 Whether proxyCall() must re-encode cache keys before calling read/write methods.
 
 stripRouteFromKey ( $key)
 
 validateKeyAndPrependRoute ( $key)
 
- Protected Member Functions inherited from MediumSpecificBagOStuff
 cas ( $casToken, $key, $value, $exptime=0, $flags=0)
 Set an item if the current CAS token matches the provided CAS token.
 
 debug ( $text)
 
 doChangeTTLMulti (array $keys, $exptime, $flags=0)
 
 doDeleteMulti (array $keys, $flags=0)
 
 doLock ( $key, $timeout, $exptime)
 
 doSetMulti (array $data, $exptime=0, $flags=0)
 
 doUnlock ( $key)
 
 getExpirationAsTimestamp ( $exptime)
 Convert an optionally relative timestamp to an absolute time.
 
 getExpirationAsTTL ( $exptime)
 Convert an optionally absolute expiry time to a relative time.
 
 getSerialized ( $value, $key)
 Get the serialized form a value, logging a warning if it involves custom classes.
 
 isInteger ( $value)
 Check if a value is an integer.
 
 isRelativeExpiration ( $exptime)
 
 makeLockKey ( $key)
 
 makeValueOrSegmentList ( $key, $value, $exptime, $flags, &$ok)
 Make the entry to store at a key (inline or segment list), storing any segments.
 
 mergeViaCas ( $key, callable $callback, $exptime, $attempts, $flags)
 
 resolveSegments ( $key, $mainValue)
 Get and reassemble the chunks of blob at the given key.
 
 tokensMatch ( $value, $otherValue)
 
 updateOpStats (string $op, array $keyInfo)
 
- Protected Member Functions inherited from BagOStuff
 fieldHasFlags ( $field, $flags)
 
 mergeFlagMaps (array $bags)
 Merge the flag maps of one or more BagOStuff objects into a "lowest common denominator" map.
 
 proxyCall (string $method, int $arg0Sig, int $resSig, array $genericArgs, BagOStuff $wrapper)
 Call a method on behalf of wrapper BagOStuff instance.
 
 setLastError ( $error)
 Set the "last error" registry due to a problem encountered during an attempted operation.
 

Protected Attributes

MemcachedClient $client
 
- Protected Attributes inherited from MemcachedBagOStuff
string $routingPrefix
 Routing prefix appended to keys during operations.
 
- Protected Attributes inherited from MediumSpecificBagOStuff
array< string, array > $locks = []
 Map of (key => (class LOCK_* constant => value)
 
float $maxLockSendDelay = 0.05
 Seconds; maximum expected seconds for a lock ping to reach the backend.
 
int $segmentationSize
 Bytes; chunk size of segmented cache values.
 
int $segmentedValueMaxSize
 Bytes; maximum total size of a segmented cache value.
 
const LOCK_DEPTH = 1
 
const LOCK_EXPIRY = 3
 
const LOCK_RCLASS = 0
 
const LOCK_TIME = 2
 
const METRIC_OP_ADD = 'add'
 
const METRIC_OP_CAS = 'cas'
 
const METRIC_OP_CHANGE_TTL = 'change_ttl'
 
const METRIC_OP_DECR = 'decr'
 
const METRIC_OP_DELETE = 'delete'
 
const METRIC_OP_GET = 'get'
 
const METRIC_OP_INCR = 'incr'
 
const METRIC_OP_SET = 'set'
 
const PASS_BY_REF = -1
 Idiom for doGet() to return extra information by reference.
 
- Protected Attributes inherited from BagOStuff
callable null $asyncHandler
 
int[] $attrMap = []
 Map of (BagOStuff:ATTR_* constant => BagOStuff:QOS_* constant)
 
string $keyspace
 Default keyspace; used by makeKey()
 
int $lastError = self::ERR_NONE
 BagOStuff:ERR_* constant of the last error that occurred.
 
int $lastErrorId = 0
 Error event sequence number of the last error that occurred.
 
LoggerInterface $logger
 
StatsFactory $stats
 

Additional Inherited Members

- Public Attributes inherited from BagOStuff
const MAX_CONFLICTS_ONE = 1
 Abort after the first merge conflict.
 
const READ_LATEST = 1
 Bitfield constants for get()/getMulti(); these are only advisory.
 
const READ_VERIFIED = 2
 Promise that the caller handles detection of staleness.
 
const WRITE_ALLOW_SEGMENTS = 16
 Allow partitioning of the value if it is a large string.
 
const WRITE_BACKGROUND = 64
 If supported, do not block on write operation completion; instead, treat writes as succesful based on whether they could be buffered.
 
const WRITE_CACHE_ONLY = 8
 Bitfield constants for set()/merge(); these are only advisory.
 
const WRITE_PRUNE_SEGMENTS = 32
 Delete all the segments if the value is partitioned.
 
- Public Attributes inherited from Wikimedia\LightweightObjectStore\StorageAwareness
const ATTR_DURABILITY = 2
 Durability of writes; see QOS_DURABILITY_* (higher means stronger)
 
const ATTR_EMULATION = 1
 
const ERR_NO_RESPONSE = 1
 Storage medium failed to yield a complete response to an operation.
 
const ERR_NONE = 0
 No storage medium error.
 
const ERR_UNEXPECTED = 3
 Storage medium operation failed due to usage limitations or an I/O error.
 
const ERR_UNREACHABLE = 2
 Storage medium could not be reached to establish a connection.
 
const QOS_DURABILITY_DISK = 4
 Data is saved to disk and writes do not usually block on fsync()
 
const QOS_DURABILITY_NONE = 1
 Data is never saved to begin with (blackhole store)
 
const QOS_DURABILITY_RDBMS = 5
 Data is saved to disk and writes usually block on fsync(), like a standard RDBMS.
 
const QOS_DURABILITY_SCRIPT = 2
 Data is lost at the end of the current web request or CLI script.
 
const QOS_DURABILITY_SERVICE = 3
 Data is lost once the service storing the data restarts.
 
const QOS_UNKNOWN = INF
 Generic "unknown" value; useful for comparisons (always "good enough")
 
- Static Protected Attributes inherited from BagOStuff
static int $nextErrorMonitorId = 1
 Next sequence number to use for watch/error events.
 

Detailed Description

A wrapper class for the pure-PHP memcached client, exposing a BagOStuff interface.

Definition at line 29 of file MemcachedPhpBagOStuff.php.

Constructor & Destructor Documentation

◆ __construct()

MemcachedPhpBagOStuff::__construct ( $params)

Available parameters are:

  • servers: The list of IP:port combinations holding the memcached servers.
  • persistent: Whether to use a persistent connection
  • compress_threshold: The minimum size an object must be before it is compressed
  • timeout: The read timeout in microseconds
  • connect_timeout: The connect timeout in seconds
Parameters
array$params

Definition at line 43 of file MemcachedPhpBagOStuff.php.

References $params.

Member Function Documentation

◆ doAdd()

MemcachedPhpBagOStuff::doAdd ( $key,
$value,
$exptime = 0,
$flags = 0 )
protected

Insert an item if it does not already exist.

Parameters
string$key
mixed$value
int$exptime
int$flagsBitfield of BagOStuff::WRITE_* constants (since 1.33)
Returns
bool Success

Reimplemented from MediumSpecificBagOStuff.

Definition at line 101 of file MemcachedPhpBagOStuff.php.

References MemcachedBagOStuff\fixExpiry(), setLastError(), and MemcachedBagOStuff\validateKeyAndPrependRoute().

◆ doCas()

MemcachedPhpBagOStuff::doCas ( $casToken,
$key,
$value,
$exptime = 0,
$flags = 0 )
protected

Set an item if the current CAS token matches the provided CAS token.

Parameters
mixed$casTokenCAS token from an existing version of the key
string$key
mixed$value
int$exptimeEither an interval in seconds or a unix timestamp for expiry
int$flagsBitfield of BagOStuff::WRITE_* constants
Returns
bool Success

Reimplemented from MediumSpecificBagOStuff.

Definition at line 113 of file MemcachedPhpBagOStuff.php.

References MemcachedBagOStuff\fixExpiry(), setLastError(), and MemcachedBagOStuff\validateKeyAndPrependRoute().

◆ doChangeTTL()

MemcachedPhpBagOStuff::doChangeTTL ( $key,
$exptime,
$flags )
protected
Parameters
string$key
int$exptime
int$flags
Returns
bool

Reimplemented from MediumSpecificBagOStuff.

Definition at line 151 of file MemcachedPhpBagOStuff.php.

References MemcachedBagOStuff\fixExpiry(), setLastError(), and MemcachedBagOStuff\validateKeyAndPrependRoute().

◆ doDelete()

MemcachedPhpBagOStuff::doDelete ( $key,
$flags = 0 )
protected

Delete an item.

Parameters
string$key
int$flagsBitfield of BagOStuff::WRITE_* constants
Returns
bool True if the item was deleted or not found, false on failure

Reimplemented from MediumSpecificBagOStuff.

Definition at line 89 of file MemcachedPhpBagOStuff.php.

References setLastError(), and MemcachedBagOStuff\validateKeyAndPrependRoute().

◆ doGet()

MemcachedPhpBagOStuff::doGet ( $key,
$flags = 0,
& $casToken = null )
protected

Get an item.

The CAS token should be null if the key does not exist or the value is corrupt

Parameters
string$key
int$flagsBitfield of BagOStuff::READ_* constants [optional]
mixed&$casTokenCAS token if MediumSpecificBagOStuff::PASS_BY_REF [returned]
Returns
mixed Returns false on failure or if the item does not exist

Reimplemented from MediumSpecificBagOStuff.

Definition at line 58 of file MemcachedPhpBagOStuff.php.

References setLastError(), and MemcachedBagOStuff\validateKeyAndPrependRoute().

◆ doGetMulti()

MemcachedPhpBagOStuff::doGetMulti ( array $keys,
$flags = 0 )
protected

Get an associative array containing the item for each of the keys that have items.

Parameters
string[]$keysList of keys
int$flagsBitfield; supports READ_LATEST [optional]
Returns
array Map of (key => value) for existing keys; preserves the order of $keys

Reimplemented from MediumSpecificBagOStuff.

Definition at line 163 of file MemcachedPhpBagOStuff.php.

References setLastError(), MemcachedBagOStuff\stripRouteFromKey(), and MemcachedBagOStuff\validateKeyAndPrependRoute().

◆ doIncrWithInitAsync()

MemcachedPhpBagOStuff::doIncrWithInitAsync ( $key,
$exptime,
$step,
$init )
protected
Parameters
string$key
int$exptime
int$step
int$init
Returns
bool True on success, false on failure

Reimplemented from MemcachedBagOStuff.

Definition at line 125 of file MemcachedPhpBagOStuff.php.

References MemcachedBagOStuff\fixExpiry(), BagOStuff\getLastError(), MemcachedBagOStuff\validateKeyAndPrependRoute(), and BagOStuff\watchErrors().

◆ doIncrWithInitSync()

MemcachedPhpBagOStuff::doIncrWithInitSync ( $key,
$exptime,
$step,
$init )
protected
Parameters
string$key
int$exptime
int$step
int$init
Returns
int|bool New value or false on failure

Reimplemented from MemcachedBagOStuff.

Definition at line 133 of file MemcachedPhpBagOStuff.php.

References $success, MemcachedBagOStuff\fixExpiry(), BagOStuff\getLastError(), MemcachedBagOStuff\validateKeyAndPrependRoute(), and BagOStuff\watchErrors().

◆ doSet()

MemcachedPhpBagOStuff::doSet ( $key,
$value,
$exptime = 0,
$flags = 0 )
protected

Set an item.

Parameters
string$key
mixed$value
int$exptimeEither an interval in seconds or a unix timestamp for expiry
int$flagsBitfield of BagOStuff::WRITE_* constants
Returns
bool Success

Reimplemented from MediumSpecificBagOStuff.

Definition at line 77 of file MemcachedPhpBagOStuff.php.

References MemcachedBagOStuff\fixExpiry(), setLastError(), and MemcachedBagOStuff\validateKeyAndPrependRoute().

◆ serialize()

MemcachedPhpBagOStuff::serialize ( $value)
protected
Parameters
mixed$value
Returns
string|int|false String/integer representation
Note
Special handling is usually needed for integers so incr()/decr() work

Reimplemented from MediumSpecificBagOStuff.

Definition at line 183 of file MemcachedPhpBagOStuff.php.

◆ unserialize()

MemcachedPhpBagOStuff::unserialize ( $value)
protected
Parameters
string | int | false$value
Returns
mixed Original value or false on error
Note
Special handling is usually needed for integers so incr()/decr() work

Reimplemented from MediumSpecificBagOStuff.

Definition at line 187 of file MemcachedPhpBagOStuff.php.

References MediumSpecificBagOStuff\isInteger().

Member Data Documentation

◆ $client

MemcachedClient MemcachedPhpBagOStuff::$client
protected

Definition at line 31 of file MemcachedPhpBagOStuff.php.


The documentation for this class was generated from the following file: