Cache de scripts PHP con eAccelerator
Otras posibilidades
Activar la cache por dominios virtuales
En aquellos casos en los que en un mismo servidor estén alojados diversos webs, puede ser conveniente activar o no el acelerador en función de estos. Es posible hacer esto mediante los parámetros de configuración y la definición de los dominios en apache, o medienta la utilización de un archivo .htaccess.
Lo primero que deberíamos hacer es modificar la configuración por defecto para que esté inactiva, poniendo a 0 los siguientes parámetros en el archivo php.ini
bash# tar xvfzp eaccelerator-0.9.3.tar.gz bash# cd eaccelerator-0.9.3 |
Ahora ya podemos activar el acelerador independientemente para cada web, utilizando las siguientes líneas bien dentro de su sección VirtualHost
en el archivo httpd.conf, o mediante un archivo .htaccess en la raiz del dominio.
bash# export PHP_PREFIX="/usr" bash# $PHP_PREFIX/bin/phpize bash# ./configure --enable-eaccelerator=shared --with-php-config=$PHP_PREFIX/bin/php-config bash# make |
Consultar el estado del acelerador
Aparte de la forma de comprobar si la extensión está instalada que hemos visto tras la instalación, hay otro método que podemos utilizar, el cual además nos permite activar o desactivar la caché y comprobar qué scripts están en caché. Es suficiente con crear una página con el siguiente código PHP.
bash# make install |
Sobra decir que esta página deberíamos protegerla bajo algún tipo de autenticación o mediante los valores de configuración eaccelerator.admin.name
y eaccelerator.admin.password
.
Utilizar el acelerador como caché de páginas
Aprovechando que el acelerador utiliza memoria intermedia para almacenar el código interpretado, dispone en su API de un conjunto de funciones que podemos utilizar para almacenar información en ella, de forma que podamos guardar resultados de funciones, trozos de texto, o el resultado completo de ejecutar una página.
Este es un estracto del archivo README que viene con los fuentes, donde se detalla cada una de las funciones ofrecidas en la API:
Installing shared extensions: /usr/lib/php/extensions/no-debug-non-zts-20020429/ |
Codificar el código para su distribución
Una pega que ve mucha gente a PHP es que al ser un lenguaje interpretado, el código fuente está visible y cualquiera con acceso a los archivos puede verlo y modificarlo, por lo que en algunas situaciones puede no ser conveniente. Para evitar esta situación los fuentes de eAccelerator vienen con un programa de nombre «encoder.php» que podemos utilizar para codificar nuestros programas PHP y distribuirlos codificados. Para poder ejecutarlos sería suficiente con que el servidor disponga de eAccelerator instalado, aunque también es posible ejecutarlos sin él, mediante la instalación de la extensión eLoader que viene con los fuentes de eAccelarator. Se puede obtener más información en el archivo «README.eLoader» que viene con los fuentes.
Para obtener más información sobre como funciona el codificador se puede obtener un listado con los parámetros disponibles ejecutando php -q encoder.php
.
Para codificar un archivo:
bash# mv /usr/lib/php/extensions/no-debug-non-zts-20020429/eaccelerator.so /usr/local/php/lib/php/extensions |
Para codificar una carpeta recursivamente:
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" |
Más información
Páginas: 1 2
Yo suelo usar Turck-MMCache.
Es verdad que el desarrollo está estancado desde hace meses, pero no es difícil recompilar los fuentes actuales en el CVS para hacerlos funcionar con la versión de PHP que tengamos instalada.
Más que un problema de versiones, el motivo que ha hecho que me pasara a eAccelerator ha sido que en éste se van incorporando más funcionalidades y resolviendo bugs. En cualquier caso he utilizado MMCache durante mucho tiempo y sin ningún problema, es simplemente que dado que el proyecto parece paralizado, creo que tiene más sentido en instalaciones nuevas utilizar eAccelerator, sobretodo teniendo en cuenta que es practicamente equivalente.
Se dice que eAccelerator es compatible con el Encode de PHP, sin embargo los scripts «encodeados» con el Turck no pueden ser ejecutados con eAcelerator (eLoader). Aunque aún no he visto las funcionalidades del EA. (en una comparativa…) pero supongo que deben ser mejores que el viejo Turck
como hacer para que despues de ejecutarse una serie de sentencias con codigo php vuelva a otra pagina.
Hola:
Para quienes usen Cpanel, aquí una versión del tutorial que escribió Esteban de Infranetworking:
http://www.comunidadhosting.com/showthread.php?p=29771
Muchas gracias!