PHP Velho Oeste 2024

APCIterator::__construct

(PECL apc >= 3.1.1)

APCIterator::__constructConstruye un objeto iterador APCIterator

Descripción

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

Construye un object APCIterator .

Parámetros

cache

El tipo de caché, que será user o file.

search

Una expresión regular de PCRE que se compara con nombres de claves de APC, como string para una única expresión regular, o como un array de expresiones regulares. O, opcionalmente, pase NULL para saltar la búsquda.

format

El formato deseado, como se configuró con una o más de las constantes APC_ITER_*.

chunk_size

El tamaño de trozo. Debe ser un valor mayor que 0. El valor predeterminado es 100.

list

El tipo a listar. Se puede pasar APC_LIST_ACTIVE o APC_LIST_DELETED.

Valores devueltos

Un object APCIterator en caso de éxito, o NULL en caso de error.

Ejemplos

Ejemplo #1 Ejemplo de APCIterator::__construct()

<?php
foreach (new APCIterator('user''/^counter\./') as $counter) {
    echo 
"$counter[key]$counter[value]\n";
    
apc_dec($counter['key'], $counter['value']);
}
?>

Ver también

  • apc_exists() - Comprobar si existe una clave de APC
  • apc_cache_info() - Recupera información que hay en caché del almacén de datos de APC
add a note add a note

User Contributed Notes 3 notes

up
1
petabyte
12 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:

<?php
$results
= new APCIterator('user', '/^('.implode('|', $patterns).')');
?>
up
-2
puiumarius at gmail dot com
10 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.
up
-1
Anti Veeranna
13 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