Acelerador de PHP APC ( Alternative PHP Cache)
Puesto que PHP es un lenguaje interpretado, cada página tiene acceso 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 puede añadir una demora de tiempo en el procesamiento bastante elevado, especialmente cuando uno alberga un sitio web con un número de visitas considerable.
You are not allowed to view links.
Register or
Login tienen como objetivo solventar esta situación, 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.
APC tiene claras ventajas: - Reduce el tiempo en la carga de las páginas
- Se puede manejar mediante el mismo PHPYou are not allowed to view links.
Register or Login
- 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, o en particulares cuando sufren los famosos efectos de webs populares.
Esto nos va a venir de perlas para aplicativos similares a drupal u otros.
Ahora vamos a ver como podemos utilizarlo en Linux, para ello nos hará falta tener un servidor web como Apache y tener PHP instalado como módulo del mismo.
Puede que según la versión, tenga un paquete con distinto nombre, simplemente hay que seleccionar el más acorde.
Debian:
$ sudo aptitude update
$ sudo apt-get install apache2-threaded-dev php5-dev php-pear make
$ sudo ln -s /usr/bin/apxs2 /usr/bin/apxs
$ sudo pecl install apc
$ sudo gedit /etc/php5/apache2/php.ini o bien
/etc/php5/conf.d/apc.iniSi en debian sale el mensaje
Sorry, I was not able to successfully run APXS., hay que instalar
apache2-prefork-dev$ sudo aptitude install apache2-prefork-dev
Ahora en el fichero
php.ini añadiremos estas dos lineas al final:
extension=apc.so
apc.enabled=1Finalmente reiniciamos el servidor web
$ sudo /etc/init.d/apache2 restartPara instalaciones manuales desde los fuentes (válido para cualquier linux) previamente hay que tener instalado el servidor Apache y PHP, en este escenario, vamos a suponer que ambos programas los tenemos instalados en
/usr/local, es decir:
/usr/local/apache
/usr/local/phpAhora nos bajamos la última versión del You are not allowed to view links.
Register or
Login de la web oficial. (actualmente la
3.0.19)
You are not allowed to view links.
Register or
Login// Como usuario normal
$ cd /tmp
$ wget You are not allowed to view links.
Register or Login
$ tar xvfz APC-3.0.19.tgz
$ cd APC-3.0.19
$ /usr/local/php/bin/phpsize
$ ./configure --enable-apc --enable-apc-mmap --with-apxs=/usr/local/apache/bin/apxs --with-php-config=/usr/local/php/bin/php-config
$ make
// como usuario root
# make install Esto nos instalará el módulo en
/usr/local/php/lib/php/20060613/apc.soPara la activación manual, editamos el fichero
php.ini# gedit /usr/local/php/etc/php.iniAñadimos estas dos lineas alfinal del fichero
php.ini: extension=/usr/local/php/lib/php/20060613/apc.so (poner la ruta absoluta)
apc.enabled=1Finalmente reiniciamos el servidor web
# apachectl stop
# apachectl startPara verificar que está realmente activo el APC, podemos utilizar la linea de commandos de PHP o bien el módulo de Apache con una sencilla página PHP.
$ php -i | grep -i apcO bien, crear una página estilo
info.php:
<?php
phpinfo();
?>Ambos commandos deberían de devolver respuesta confirmando la utilización del APC, por tanto, ya hemos logrado nuestro objetivo, nuestras aplicaciónes desde este momento y de manera transparente empezarán a utilizar el sistema de cache compilada en PHP.
De manera predeterminada, para la mayoría de usuarios las opciones por defecto son suficientes, en caso de querer experimentar comportamientos distintos, hay que leer las Opciones de configuracion que se deben añadir en el fichero
php.ini e ir jugando con distintos valores hasta lograr los resultados esperados.
Nos vemos