Una de las formas de mejorar el rendimiento de un servidor con páginas web en PHP es la instalación de un sistema cache como módulo del intérprete de PHP instalado en el servidor. El uso de estos sistemas puede mejorar el rendimiento del servidor entre un 20% y un 50%. Entre los sistemas más populares que podemos encontrar se encuentran Zend Optimizer, IonCube o eAccelerator.
Vamos a centrarnos en éste último y veremos como instalarlo paso a paso sobre un servidor Linux desde los fuentes. Para poder compilar correctamente eAccelerator debes tener instalado phpize, en Fedora puedes obtenerlo usando yum install php-devel, en Debian apt-get install php-dev.
Lo primero es descargar el paguete correspondiente a la última versión de eAccelerator (en este caso la 0.9.5.3). Podemos elegir descargarlo en .tar.bz2 o .zip, usaremos el .tar.bz2 y lo descargamos, descomprimimos y entramos en el directorio:
wget http://bart.eaccelerator.net/source/0.9.5.3/eaccelerator-0.9.5.3.tar.bz2
tar jvxf eaccelerator-0.9.5.3.tar.bz2
cd eaccelerator-0.9.5.3
Una vez dentro del directorio, vamos a empezar a compilar los fuentes. Si sólo tienes un intérprete de PHP instalado (suele ser lo más habitual) puedes ejecutar:
phpize
./configure
make
En caso de tener más de una instalación deberás indicar donde se encuentra la que quieres usar. Sustituye la ruta en la primera línea (/usr/php) por aquella donde tengas instalado PHP:
PHP_PREFIX="/usr/php"
$PHP_PREFIX/bin/phpize
./configure –enable-eaccelerator=shared –with-php-config=$PHP_PREFIX/bin/php-config
make
Realizado esto ya tenemos el módulo preparado para su instalación, ejecutamos:
make install
Una vez terminada la instalación se nos mostrará la ruta donde se ha copiado el módulo del eAccelerator que debemos configurar en el php.ini, si todo ha ido bien debes tener algo como esto:
Installing shared extensions: /usr/lib/php/modules/20080501/
Ahora debemos indicar en el php.ini nuestro nuevo módulo para que sea cargado con el intérprete. Abrimos el php.ini, si no sabes donde está localizado ejecuta phpinfo(). Editamos el archivo y buscamos una sección llamada "Dynamic Extensions". Buscamos una directiva llamada extension_dir y la definimos con la ruta donde guardamos las extensiones:
extension_dir = "/usr/php/modulos/"
A continuación agregamos las siguientes líneas que incluyen el nombre del módulo y su configuración:
extension="eaccelerator.so"
eaccelerator.shm_size="16"
eaccelerator.cache_dir="/tmp/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"
Guardamos el php.ini y ahora debemos crear el directorio temporal que usará eAccelerator, definido en la configuración que acabamos de agregar al php.ini como eaccelerator.cache, este directorio debe tener permisos de escritura:
mkdir /tmp/eaccelerator/
chmod 777 /tmp/eaccelerator/
Termidamo esto ya tenemos eAccelerator intalado en nuestro servidor. Sólo falta reiniciar apache para que la nueva configuración tenga efecto.