(PECL apc >= 3.1.1)

APCIterator::__constructConstruit un objet d'itération APCIterator


public APCIterator::__construct ( string $cache [, mixed $search = NULL [, int $format = APC_ITER_ALL [, int $chunk_size = 100 [, int $list = APC_LIST_ACTIVE ]]]] )

Construit un objet APCIterator.

Liste de paramètres


Le type de cache, user ou file.


Une expression rationnelle PCRE pour établir la correspondance avec les clés APC. Peut être une string pour une expression rationnelle simple, ou un array d'expressions rationnelles. Optionnellement, vous pouvez passer NULL pour sauter la recherche.


Le format désiré, configuré à partir d'une ou plusieurs constantes APC_ITER_*.


La taille du segment. Doit être une valeur supérieure à 0. La valeur par défaut est 100.


Le type de liste. Passez APC_LIST_ACTIVE ou APC_LIST_DELETED.

Valeurs de retour

Un objet APCIterator en cas de succès, ou NULL si échec.


Exemple #1 Exemple avec APCIterator::__construct()

foreach (new APCIterator('user''/^counter\./') as $counter) {
apc_dec($counter['key'], $counter['value']);

Voir aussi

add a note add a note

User Contributed Notes 3 notes

8 years ago
With MAMP (using PHP 5.3.5 and APC 3.1.7) passing an array with multiple regex strings as $search arg always yields an empty APCIterator. Whereas passing a single string regex works. (Note: I only tried cache type 'user'.)

Workaround: Concatenated all regexes to single one with alternation. Example:

= new APCIterator('user', '/^('.implode('|', $patterns).')');
puiumarius at gmail dot com
6 years ago
There is a bug in APCIterator: whatever the chunk size, APCIterator gets ALL keys matching the specified pattern (it seems that $chunk_size parameter is ignored).

Also, the documentation states that the default chunk size is 100, but even that is ignored.

Tested APC version is 3.1.13.

Example (I have 180 keys for this pattern in total):
$objIterator = new APCIterator('user', '/^key_prefix_\.*/', APC_ITER_ALL, 20);

If I itterate $objIterator  and then count() the results, I get 180.

Also, for:
$objIterator = new APCIterator('user', '/^key_prefix_\.*/');
Same count(), 180.

Even $objIterator->getTotalCount() returns 180.
Anti Veeranna
9 years ago
Iterating (and specifically using current()) does not expunge cache entries for which $ttl has passed, you need to use apc_fetch to get rid of stale entries.
To Top