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

$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
throws
Exception

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
throws
Exception

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
throws
Exception

if no cache frontend has been set.

throws
InvalidDataException

if $data is not a string

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
throws
InvalidArgumentException

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
string

removeIdentifierFromAllTags()

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

        
On this page

Search results