(PECL apc >= 3.1.1)

APCIterator::__constructConstructs an APCIterator iterator object


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

Constructs an APCIterator object.



The cache type, which will be user or file.


A PCRE regular expression that matches against APC key names, either as a string for a single regular expression, or as an array of regular expressions. Or, optionally pass in NULL to skip the search.


The desired format, as configured with one or more of the APC_ITER_* constants.


The chunk size. Must be a value greater than 0. The default value is 100.


The type to list. Either pass in APC_LIST_ACTIVE or APC_LIST_DELETED.

Значення, що повертаються

An APCIterator object on success, or NULL on failure.


Приклад #1 A APCIterator::__construct() example

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

Прогляньте Також

add a note add a note

User Contributed Notes 3 notes

11 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).')');
Anti Veeranna
12 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.
puiumarius at gmail dot com
8 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.
To Top