Extra Block Types (EBT) - Nueva experiencia con Layout Builder❗

Extra Block Types (EBT): tipos de bloques con estilo y personalizables: Presentaciones de diapositivas, Pestañas, Tarjetas, Acordeones y muchos más. Configuraciones integradas para fondo, DOM Box y plugins de JavaScript. Experimenta hoy el futuro de la construcción de diseños.

Módulos de demostración EBT Descargar módulos EBT

❗Extra Paragraph Types (EPT) - Nueva experiencia con Paragraphs

Extra Paragraph Types (EPT): conjunto de módulos basado en párrafos de forma análoga.

Módulos de demostración EPT Descargar módulos EPT

Scroll

Configuración de APC. Almacenamiento en caché en PHP.

11/05/2025, by Ivan

!!! Atención !!! No use APC si tiene PHP versión 5.5 o superior, OPCache reemplaza a APC y está integrado en PHP.

El 21 de marzo de 2013, se lanzó la beta 1 de PHP 5.5, que incluye "Zend OPCache" - Parece que esto será el reemplazo de APC, ya que está incluido en el núcleo de PHP, y deberá mantenerse con cada nueva versión.

APC es una caché alternativa de PHP que almacena en caché el código de operaciones de PHP, o como lo describen los desarrolladores: "APC es un sistema gratuito, de código abierto y confiable para la optimización y almacenamiento en caché de código intermedio de PHP".

PHP es un lenguaje de alto nivel. Como en todos los lenguajes de alto nivel, puede ser compilado en diversas plataformas. Los sistemas de gestión de contenido como Drupal constan de cientos, si no miles, de scripts PHP, y la naturaleza modular de tales sistemas significa que en cada carga de página realmente puede utilizarse cientos de esos scripts. A diferencia de los lenguajes de alto nivel, PHP se engancha sobre la marcha, es decir, el script se convierte en bytecode durante la ejecución. Aquí es donde APC es útil: APC puede almacenar una copia del script compilado en memoria, lo que reduce significativamente los recursos necesarios para Drupal. (Cabe mencionar que en algunos lenguajes esto se hace automáticamente: un script Python en un servidor Apache se pasa al intérprete de Python, dejando la versión compilada del script cerca del mismo script, que el servidor web usará para acceder a ella en el futuro).
APC se configura fácilmente. Primero, necesita instalarlo:

sudo apt-get install php-pear
sudo apt-get install php5-dev apache2-prefork-dev build-essential
sudo pecl install apc

Ahora debe copiar el archivo apc.php que adjunté a la lección y ponerlo en el servidor, luego reinicie Apache:

sudo /etc/init.d/apache2 restart

Ahora puede abrir el archivo http://test/apc.php y ver las estadísticas de APC.

Drupal APC

Las estadísticas deberían verse algo así. Como pueden ver en los gráficos, la situación no es óptima. Hay una gran cantidad de archivos ausentes en la caché (MISS) y una pequeña cantidad de archivos presentes en la caché (HITS). La fragmentación de archivos en la memoria de APC es alta. Todo esto indica un uso ineficiente de APC. ¿Por qué sucede esto?

No hay suficiente memoria: si tiene 8 MB para APC y el tamaño de los scripts cargados es de 12 MB, no tendrá suficiente memoria para estos archivos, por lo que aparecerán nuevos MISS.

Fragmentación: puede que tenga 32 MB de memoria asignada para APC, pero los archivos ocupan 40 MB. Pero no todos los archivos se utilizan todo el tiempo. Por ejemplo, un módulo se carga de vez en cuando y se utiliza raramente. Puede que, debido a la configuración de APC, estos archivos permanezcan en la caché sin usarse, mientras que los archivos activos necesiten ser almacenados en caché. Los archivos no siempre se almacenan en bloques, por lo que si un archivo es grande, puede ser dividido en dos partes para ajustarse a la memoria de la caché, lo que crea huecos en la memoria.

Pero primero, veamos los campos de configuración de APC, el archivo de configuración de APC en Debian/Ubuntu se encuentra en /etc/php5/conf.d/apc.ini:

apc.enabled=1

APC está habilitado. Esta es una configuración obvia, pero muy importante. Deshabilitar APC podría reducir el rendimiento en un servidor en producción.

apc.shm_segments=1
apc.shm_size=32

Estas configuraciones indican cuánta memoria asignar a APC. apc.shm_segments=1 indica que se asigna un segmento de memoria, mientras que apc.shm_size=32 indica que el tamaño de ese segmento es de 32 MB. Puede cambiar el tamaño del segmento, por ejemplo a 64 MB, y reiniciar Apache. Luego, si la cantidad de MISS no se reduce a 1%, puede intentar con 128 MB, y así sucesivamente. Esta parece ser la configuración más importante para trabajar con APC.

apc.cache_by_default=1

;apc.filters=

Esto configura APC para todos los scripts PHP. También podemos comentar la línea con apc.filters.

apc.cache_by_default=0
apc.filters="+drupal6"

De esta forma, podemos restringir el uso de APC solo a los archivos de Drupal 6. Esto es útil cuando no queremos perder la caché cada vez que usamos PhpMyAdmin en el servidor.

apc.stat=1

Este parámetro afecta directamente al rendimiento. Cuando está habilitado, la caché en APC permanece allí hasta que se elimina. Cuando la configuración está deshabilitada, APC compara el tiempo de ejecución del script con el último cambio del archivo y agrega la nueva versión al caché. Esta configuración es necesaria para servidores de producción, pero para desarrollo, es mejor deshabilitarla. Además, cuando apc.stat está habilitado, es necesario limpiar la caché de APC al actualizar módulos y el núcleo de Drupal.

apc.ttl=0

Esta configuración define el tiempo en milisegundos para limpiar la caché. Con 0, la caché no se limpia. Así que ponemos 0, ya que no queremos que nuestra caché se limpie cada hora (por defecto es 7200, es decir, cada 2 horas).

apc.rfc1867=1

Puede habilitar esta configuración para Drupal si desea que el estado de carga de archivos se muestre a través de APC.

apc.num_files_hint=2048

Este parámetro es útil cuando hay varios sitios en el servidor, o varios Drupal. Un Drupal puede llenar la caché con más de 500 archivos. Para evitar que la caché de un sitio sobrescriba los archivos de otro, es mejor aumentar este valor (por defecto es 1024).

Después de realizar los cambios en la configuración, no olvide reiniciar el servidor. El resultado debería ser algo así:

Drupal APC

Notará que la cantidad de MISS debe ser cercana a cero y la fragmentación debe ser del 0%.