ApcuBackend extends AbstractBackend implements TaggableBackendInterface
A caching backend which stores cache entries by using APCu.
This backend uses the following types of keys:
- tag_xxx xxx is tag name, value is array of associated identifiers identifier. This is "forward" tag index. It is mainly used for obtaining content by tag (get identifier by tag -> get content by identifier)
- ident_xxx xxx is identifier, value is array of associated tags. This is "reverse" tag index. It provides quick access for all tags associated with this identifier and used when removing the identifier
Each key is prepended with a prefix. By default prefix consists from two parts separated by underscore character and ends in yet another underscore character:
- "TYPO3"
- MD5 of path to TYPO3 and user running TYPO3 This prefix makes sure that keys from the different installations do not conflict.
Table of Contents
Interfaces
- TaggableBackendInterface
- A contract for a cache backend which supports tagging.
Constants
- DATETIME_EXPIRYTIME_UNLIMITED = '9999-12-31T23:59:59+0000'
- UNLIMITED_LIFETIME = 0
Properties
- $cache : FrontendInterface
- Reference to the cache which uses this backend
- $cacheIdentifier : string
- $context : string
- The current application context
- $defaultLifetime : int
- Default lifetime of a cache entry in seconds
- $identifierPrefix : string
- A prefix to separate stored data from other data possible stored in the APC
Methods
- __construct() : mixed
- Constructs this backend
- collectGarbage() : mixed
- Does nothing, as APCu does GC itself
- findIdentifiersByTag() : array<string|int, mixed>
- Finds and returns all cache entry identifiers which are tagged by the specified tag.
- flush() : mixed
- Removes all cache entries of this cache.
- flushByTag() : mixed
- Removes all cache entries of this cache which are tagged by the specified tag.
- flushByTags() : mixed
- Backwards compatibility safeguard since re-introducing flushByTags as API.
- get() : mixed
- Loads data from the cache.
- has() : bool
- Checks if a cache entry with the specified identifier exists.
- remove() : bool
- Removes all cache entries matching the specified identifier.
- set() : mixed
- Saves data in the cache.
- setCache() : mixed
- Initializes the identifier prefix when setting the cache.
- setDefaultLifetime() : mixed
- Sets the default lifetime for this cache backend
- addIdentifierToTags() : mixed
- Associates the identifier with the given tags
- calculateExpiryTime() : DateTime
- Calculates the expiry time by the given lifetime. If no lifetime is specified, the default lifetime is used.
- findTagsByIdentifier() : array<string|int, mixed>
- Finds all tags for the given identifier. This function uses reverse tag index to search for tags.
- getIdentifierPrefix() : string
- Retrieves the cache identifier prefix.
- removeIdentifierFromAllTags() : mixed
- Removes association of the identifier with the given tags
- setIdentifierPrefix() : mixed
- Set the cache identifier prefix.
Constants
DATETIME_EXPIRYTIME_UNLIMITED
public
mixed
DATETIME_EXPIRYTIME_UNLIMITED
= '9999-12-31T23:59:59+0000'
UNLIMITED_LIFETIME
public
mixed
UNLIMITED_LIFETIME
= 0
Properties
$cache
Reference to the cache which uses this backend
protected
FrontendInterface
$cache
$cacheIdentifier
protected
string
$cacheIdentifier
$context
The current application context
protected
string
$context
This variable is currently unused and set to "production" always. It is only kept to keep backwards compatibility.
$defaultLifetime
Default lifetime of a cache entry in seconds
protected
int
$defaultLifetime
= 3600
$identifierPrefix
A prefix to separate stored data from other data possible stored in the APC
protected
string
$identifierPrefix
Methods
__construct()
Constructs this backend
public
__construct(string $context[, array<string|int, mixed> $options = [] ]) : mixed
Parameters
- $context : string
-
Unused, for backward compatibility only
- $options : array<string|int, mixed> = []
-
Configuration options - unused here
Tags
collectGarbage()
Does nothing, as APCu does GC itself
public
collectGarbage() : mixed
findIdentifiersByTag()
Finds and returns all cache entry identifiers which are tagged by the specified tag.
public
findIdentifiersByTag(string $tag) : array<string|int, mixed>
Parameters
- $tag : string
-
The tag to search for
Return values
array<string|int, mixed> —An array with identifiers of all matching entries. An empty array if no entries matched
flush()
Removes all cache entries of this cache.
public
flush() : mixed
Tags
flushByTag()
Removes all cache entries of this cache which are tagged by the specified tag.
public
flushByTag(string $tag) : mixed
Parameters
- $tag : string
-
The tag the entries must have
flushByTags()
Backwards compatibility safeguard since re-introducing flushByTags as API.
public
flushByTags(array<string|int, string> $tags) : mixed
See https://review.typo3.org/#/c/50537/ comments for patch set 14.
The method is here even though it is only required for TaggableBackendInterface. We add it here to ensure third party cache backends do not fail but instead delegate to a less efficient linear flushing behavior.
Parameters
- $tags : array<string|int, string>
get()
Loads data from the cache.
public
get(string $entryIdentifier) : mixed
Parameters
- $entryIdentifier : string
-
An identifier which describes the cache entry to load
Return values
mixed —The cache entry's content as a string or FALSE if the cache entry could not be loaded
has()
Checks if a cache entry with the specified identifier exists.
public
has(string $entryIdentifier) : bool
Parameters
- $entryIdentifier : string
-
An identifier specifying the cache entry
Return values
bool —TRUE if such an entry exists, FALSE if not
remove()
Removes all cache entries matching the specified identifier.
public
remove(string $entryIdentifier) : bool
Usually this only affects one entry but if - for what reason ever - old entries for the identifier still exist, they are removed as well.
Parameters
- $entryIdentifier : string
-
Specifies the cache entry to remove
Return values
bool —TRUE if (at least) an entry could be removed or FALSE if no entry was found
set()
Saves data in the cache.
public
set(string $entryIdentifier, string $data[, array<string|int, mixed> $tags = [] ][, int $lifetime = null ]) : mixed
Parameters
- $entryIdentifier : string
-
An identifier for this specific cache entry
- $data : string
-
The data to be stored
- $tags : array<string|int, mixed> = []
-
Tags to associate with this cache entry
- $lifetime : int = null
-
Lifetime of this cache entry in seconds. If NULL is specified, the default lifetime is used. "0" means unlimited lifetime.
Tags
setCache()
Initializes the identifier prefix when setting the cache.
public
setCache(FrontendInterface $cache) : mixed
Parameters
- $cache : FrontendInterface
setDefaultLifetime()
Sets the default lifetime for this cache backend
public
setDefaultLifetime(int $defaultLifetime) : mixed
Parameters
- $defaultLifetime : int
-
Default lifetime of this cache backend in seconds. If NULL is specified, the default lifetime is used. "0" means unlimited lifetime.
Tags
addIdentifierToTags()
Associates the identifier with the given tags
protected
addIdentifierToTags(string $entryIdentifier, array<string|int, mixed> $tags) : mixed
Parameters
- $entryIdentifier : string
- $tags : array<string|int, mixed>
calculateExpiryTime()
Calculates the expiry time by the given lifetime. If no lifetime is specified, the default lifetime is used.
protected
calculateExpiryTime([int $lifetime = null ]) : DateTime
Parameters
- $lifetime : int = null
-
The lifetime in seconds
Return values
DateTime —The expiry time
findTagsByIdentifier()
Finds all tags for the given identifier. This function uses reverse tag index to search for tags.
protected
findTagsByIdentifier(string $identifier) : array<string|int, mixed>
Parameters
- $identifier : string
-
Identifier to find tags by
Return values
array<string|int, mixed> —Array with tags
getIdentifierPrefix()
Retrieves the cache identifier prefix.
protected
getIdentifierPrefix() : string
Return values
stringremoveIdentifierFromAllTags()
Removes association of the identifier with the given tags
protected
removeIdentifierFromAllTags(string $entryIdentifier) : mixed
Parameters
- $entryIdentifier : string
setIdentifierPrefix()
Set the cache identifier prefix.
protected
setIdentifierPrefix(string $identifierPrefix) : mixed
Parameters
- $identifierPrefix : string