El comportamiento de estas funciones es afectado por la configuración en el archivo php.ini.
Aunque los ajustes predeterminados de APCu funcionan correctamente en muchas instalaciones, es útil considerar ajustar estos parámetros de configuración.
Una cuestión importante para la configuración de APCu es
cuál es el tamaño adecuado que debe asignarse en la memoria a APCu.
La directiva ini que controla este parámetro es apc.shm_size.
El párrafo a continuación es importante para responder a esta pregunta.
Una vez iniciado el servidor, el script apc.php, disponible con
la extensión, puede ser copiado en el document root y ejecutado por el
navegador. Este script proporciona un análisis detallado del funcionamiento interno
de APCu. Si la biblioteca GD está activada en PHP, entonces el script puede mostrar
gráficos pertinentes.
Si APCu está funcionando, el número de Cache full count (a la izquierda)
mostrará el número de veces que el caché ha alcanzado su capacidad máxima y ha tenido que
evacuar entradas para liberar memoria. Durante la evacuación, si
apc.ttl ha sido especificado, APCu intentará primero eliminar las
entradas expiradas, es decir, las entradas cuyo TTL ha expirado o las entradas
que no tienen TTL definido y que no han sido consultadas en los últimos
apc.ttl segundos. Si apc.ttl no ha sido
definido o si la eliminación de las entradas expiradas no ha liberado suficiente
espacio, APCu borrará la totalidad del caché.
El número de evacuaciones debe ser mínimo en un caché bien configurado. Si el caché está constantemente lleno y por lo tanto liberado a la fuerza, el removimiento resultante tendrá efectos perjudiciales en el rendimiento del script. La manera más sencilla de reducir este número es asignar más memoria a APCu.
Cuando APCu es compilado con mmap (Memory Mapping), solo utilizará un
segmento de memoria, a diferencia del caso en que APCu es construido con
SHM (SysV Shared Memory) que utiliza varios segmentos de memoria. MMAP no tiene
un límite máximo como SHM en /proc/sys/kernel/shmmax.
En general, el uso de MMAP es recomendado ya que reclama la memoria
más rápidamente cuando el servidor web es reiniciado y reduce el impacto en
la asignación de memoria al inicio.
| Nombre | Por defecto | Cambiable | Historial de cambios |
|---|---|---|---|
| apc.enabled | "1" | INI_SYSTEM |
|
| apc.shm_segments | "1" | INI_SYSTEM |
|
| apc.shm_size | "32M" | INI_SYSTEM |
|
| apc.entries_hint | 512 * apc.shm_size | INI_SYSTEM |
Prior to APcu 5.1.25, the default was 4096 |
| apc.ttl | "0" | INI_SYSTEM |
|
| apc.gc_ttl | "3600" | INI_SYSTEM |
|
| apc.mmap_file_mask | NULL | INI_SYSTEM |
|
| apc.slam_defense | "0" | INI_SYSTEM |
|
| apc.enable_cli | "0" | INI_SYSTEM |
|
| apc.use_request_time | "0" | INI_ALL |
Anteriormente a APCu 5.1.19, el valor predeterminado era 1. |
| apc.serializer | "php" | INI_SYSTEM |
Anteriormente a APCu 5.1.15, el valor predeterminado era "default". |
| apc.coredump_unmap | "0" | INI_SYSTEM |
|
| apc.preload_path | NULL | INI_SYSTEM |
Aquí hay una aclaración sobre el uso de las directivas de configuración.
apc.enabled
bool
apc.enabled puede ser puesto a 0 para desactivar APC.
Esto puede ser útil cuando APC es compilado estáticamente en PHP
ya que no hay otra manera de desactivarlo (cuando APC es
compilado como DSO, la línea extension
en el fichero php.ini puede simplemente ser comentada).
apc.shm_segments
int
apc.shm_size
está puesto al valor máximo permitido por el sistema, entonces aumentar
este valor puede evitar que APC agote su memoria.
apc.shm_size
string
apc.entries_hint
int
apc.ttl
int
apc.ttl segundos. Este parámetro no tiene ningún
efecto sobre las entradas de caché para las cuales un TTL explícito está especificado.
apc.gc_ttl
int
0, la limpieza basada en el tiempo está desactivada,
y las entradas solo se eliminan cuando su número de referencias cae a cero.
apc.mmap_file_mask
string
--enable-mmap, este parámetro recibe la máscara de
fichero de tipo mktemp-style a pasar al módulo mmap para determinar
si la región de la memoria usando mmap será guardada a través
de un fichero o por la de la memoria compartida.
En el caso de que el guardado se haga a través de un fichero,
la máscara será de la forma /tmp/apc.XXXXXX
(con exactamente 6 X).
Para usar shm_open/mmap de la norma POSIX, la máscara debe contener
.shm, como en el siguiente ejemplo:
/apc.shm.XXXXXX. Este parámetro puede ser definido por
/dev/zero para usar la interfaz
/dev/zero del núcleo con una memoria usando mmap
anónimamente. Dejar este parámetro indefinido forzará un mmap anónimo.
apc.slam_defense
bool
apc.slam_defense en 1
puede ayudar a evitar que varios procesos pongan en caché
el mismo fichero simultáneamente introduciendo un mecanismo
de probabilidad. Si la misma clave es intentada ser puesta en caché
en un corto lapso de tiempo por diferentes procesos, salta
la puesta en caché para el proceso actual para mitigar los posibles
problemas de puesta en caché.
apc.enable_cli
int
apc.serializer
string
apc.coredump_unmap
bool
Esta opción es potencialmente peligrosa. Desasignar un segmento de memoria compartida usado por mmap en el gestor de señales fatales puede causar un comportamiento impredecible si ocurre un error fatal.
Nota: Aunque algunos núcleos pueden proporcionar la posibilidad de ignorar muchos tipos de memoria compartida cuando generan un fichero core dump, estas implementaciones también pueden ignorar importantes segmentos de memoria compartida como el tablero de Apache.
apc.preload_path
string
apc.use_request_time
bool