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 mediante el almacenamiento en caché.

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 esté 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

Contenidos relacionados

Pautas