APC

RECU-0266 (Recurso Ficha Técnica)

Descripción

El APC, o caché alternativo de PHP (por sus siglas en inglés de Alternative PHP Cache), es un código de operación de caché libre y abierto para PHP. Su objetivo es el de proporcionar un marco robusto, libre y abierto para optimizar código de PHP intermedio mediante el almacenamiento en caché.

PHP es un lenguaje interpretado, por lo tanto existe un acceso a la pagina mediante la ejecución del propio script, que este a su vez es parseado, analizado, compilado y finalmente ejecutado. Este ciclo de cargar, analizar y compilar produce un retraso de tiempo de proceso considerable , especialmente si es una aplicación con un número de accesos elevado. El objetivo de APC, como acelerador de cache, es solventar esta situación. Trata de reducir la demora y lograr mantener una versión compilada de la secuencia de comandos en memoria (o disco) consiguiendo en la siguiente petición servir el mismo script compilado, optimizando el ciclo natural de la ejecución de PHP.

PHP es un lenguaje interpretado, eso quiere decir que los ficheros de código fuente se abren e interpretan cada vez que se necesita ejecutar algo. El interprete de PHP genera un código intermedio, llamado “opcode”, que se ejecuta y genera el resultado para el que se haya programado dicho código fuente. APC actúa de forma transparente, almacenando ese código intermedio en memoria y ejecutándolo cada vez que se solicita, de modo que no es necesario volver a abrir e interpretar los ficheros con el código fuente para ejecutarlos, con lo que se ahorra tiempo y accesos a disco, acelerando así de forma considerable la carga de la página.

Ejemplo de uso

Las directivas de configuración dependen mucho del tipo de aplicación PHP que se este desarrollando. Hay que considerar los usuarios visitantes, los archivos que hay que cachear, la frecuencia de los cambios que se producen

Dependiendo del número de visitas, cantidad de archivos a cachear, frecuencia de cambio de los archivos, etc,...se modificarán las condiciones de configuración. Una configuración de ejemplo con pequeñas notas acerca del significado de las directivas usadas (en el archivo /usr/local/share/doc/APC/INSTALL tiene todas las directivas disponibles detalladas):

; Activa el APC
apc.enabled=1
; Número de segmentos de memoria compartida
apc.shm_segments=1
; Tamaño de la memoria compartida
apc.shm_size=128
; Un número aproximado de archivos fuente a cachear
apc.num_files_hint=6000
; Un número aproximado de variables a cachear
apc.user_entries_hint=100
; Segundos que permanece en cache una entrada que ya no se usa
apc.ttl=600
; Idem al anterior pero para las variables de usuario
apc.user_ttl=600
; Segundos que dejamos una entrada cacheada en el recolector de basura
apc.gc_ttl=0
; Indica si se cachea por defecto.
apc.cache_by_default=On
; Expresiones regulares para saber que archivos cacheamos
; Resulta útil si se usa en combinación con la directiva anterior
apc.filters=""
; Indica si se activa el APC para el modo CLI del PHP
apc.enable_cli=0
; Indica el tamaño máximo de archivos a cachear
apc.max_file_size=1M
; Indica si el APC ha de verificar si los archivos han sido modificados
; para actualizar la cache
apc.stat=1

Ventajas e inconvenientes

  • Reduce el tiempo en la carga de las páginas
  • Se puede manejar mediante el mismo PHP
  • Es transparente para la aplicación
  • Evita recompilar el código PHP por cada conexión
  • Disminuye la carga en el servidor, principalmente tiempo de CPU y consumo de memoria, lo cual es elemental para una web grande.

Requisitos e incompatibilidades

No se necesitan bibliotecas externas para construir esta extensión.

Enlaces externos