Configuración en tiempo de ejecución

El comportamiento de estas funciones se ve afectado por la configuración de 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.

Opciones de configuración de APCu
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 "4096" INI_SYSTEM  
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  
Para más detalles y definiciones de los modos de INI_*, vea Dónde se puede realizar un ajuste de configuración.

He aquí una breve explicación 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

El número de segmentos de memoria compartida a asignar al caché de compilación Si APC carece de memoria compartida pero que 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

El tamaño de cada segmento de memoria compartida dado en notación abreviada como se indica en esta FAQ. Por defecto, algunos sistemas (incluyendo la mayoría de las variantes de BSD) tienen un límite muy bajo para el tamaño de un segmento de memoria compartida.

apc.entries_hint int

Un "indicio" sobre el número de variables distintas que pueden ser almacenadas. Poner a cero o en caso de duda omitir.

apc.ttl int

Considerar que las entradas de caché sin TTL explícito son expiradas si no han sido consultadas desde hace tantos segundos. En efecto, esto permite que estas entradas sean oportunamente eliminadas durante una inserción en el caché, o antes de una eliminación completa. Tenga en cuenta que debido a que la eliminación es oportunista, las entradas pueden seguir siendo legibles incluso si son más antiguas que 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

El número de segundos durante los cuales una entrada de caché puede permanecer en la lista de recolección de basura después de haber sido retirada o invalidada. Las entradas son elegibles para eliminación si su número de referencias es cero, o si exceden este límite de tiempo. Si se establece en 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

Si APCu ha sido compilado con la opción MMAP usando --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

Al inicio o durante la modificación de un fichero en un servidor muy ocupado, varios procesos pueden entrar en competencia para poner en caché el mismo fichero al mismo tiempo. Configurar 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

Principalmente usado para pruebas y depuración. Definir este parámetro permite activar APC en la versión CLI de PHP. Normalmente, no es ideal crear, alimentar y destruir el caché APC en cada solicitud CLI. Sin embargo, en muchos escenarios de prueba es útil poder activar fácilmente APC en la versión CLI de PHP.

apc.serializer string

Este parámetro permite a APC usar un serializador de terceros

apc.coredump_unmap bool

Activa la gestión por APC de señales, tales como SIGSEGV, que provocan la escritura de ficheros core dump cuando son recibidas. Cuando estas señales son recibidas, APC intentará desasignar el segmento de memoria compartida reservado a mmap con el objetivo de excluirlo del fichero core dump. Esta opción puede mejorar la estabilidad del sistema cuando se reciben señales fatales y APC está configurado con un largo segmento de memoria compartida.

Advertencia

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

Opcional, define una ruta hacia el directorio donde APC cargará los datos del caché al inicio.

apc.use_request_time bool

Usa el tiempo de inicio de la solicitud de la interfaz SAPI para la duración de vida (TTL).

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top