Cómo elegir el mejor handler de PHP

Dificultad: Fácil
Tiempo de Lectura: 3 minutos

¿Conoces los handlers de PHP? Estos definen el método que Apache utilizará para comunicarse con los scripts de PHP. Conocer las diferencias entre ellos te permitirá verificar si estás utilizando el adecuado en tu servidor dedicado o Cloud VPS.

A la hora de elegir un handler de PHP hay dos cosas que entran en juego: rendimiento y seguridad. Los handlers son naturalmente distintos, y mientras algunos presentan un mayor rendimiento o un menor consumo de recursos, puede que sean menos seguros en comparación con los que más recursos consumen. Existen 4 handlers y a continuación te detallaremos cada uno de ellos:

suPHP: este es el handler que se suele usar por defecto. suPHP corre como un módulo CGI y sus mayores beneficios están a nivel de seguridad y permisos. Si lo usamos en combinación con suEXEC, todos los scripts de nuestro sitio serán ejecutados por el usuario propietario, sin necesidad de que intervenga el usuario nobody de Apache. En otras palabras, no será necesario utilizar permisos excesivos como 777 por ejemplo, gracias a lo cual obtendremos mayor seguridad. Eso no es todo, porque cada request de PHP genera un proceso propio, de forma que son más fáciles de rastrear.
El inconveniente con suPHP es que requiere un mayor consumo de recursos y su rendimiento en comparación con otros handlers como DSO es inferior. Cabe mencionar además que suPHP no permite configurar directivas de PHP en .htaccess, es decir que tendrás que configurarlas directamente en php.ini, tampoco permite usar sistemas de caché como eAccelerator, XCache, etc.

DSO: es el handler más rápido de todos cuando de servir peticiones se trata. Este handler ejecuta PHP como un módulo de Apache y es uno de los más viejos que existen. Los scripts PHP son ejecutados directamente por el usuario «nobody» de Apache, por lo tanto a veces será necesario asignar permisos 777 a carpetas para que nobody pueda ejecutar los scripts. Usar permisos 777 es una desventaja a nivel de seguridad ya que permite que cualquier usuario pueda modificar determinados archivos, incluso de otros usuarios. Eso no es todo, porque los archivos generados por PHP quedarán con nobody como propietario, lo cual puede derivar en problemas de permisos.
DSO permite el uso de cachés como eAccelerator, lo cual ayuda a obtener una mayor performance. También brinda al usuario la posibilidad de usar directivas PHP desde .htaccess.

FCGI – FastCGI: nos da un mejor rendimiento que suPHP, aunque no está a la altura de DSO. FastCGI es bueno para reducir el uso de CPU, aunque requiere de un mayor uso de RAM, ya que almacena scripts de PHP en memoria para no tener que iniciar un proceso separado para cada petición.
Lo bueno de FastCGI es que podemos usarlo junto a suEXEC para que sea el usuario del sitio quien ejecute los scripts y no el usuario nobody de Apache. Como decíamos, FastCGI no crea un proceso nuevo para cada request, lo cual permite ahorrar recursos pero a su vez hace que rastrear las requests sea más difícil.
FastCGI hace uso de memoria RAM para mantener scripts en segundo plano y listos para despacharlos, lo cual puede llevar a un uso exhaustivo de la misma. Este handler además ha demostrado que no se lleva bien con todas las programaciones de PHP, por lo que algunos scripts pueden generar problemas.

CGI: un handler que ya casi no es usado debido a los beneficios que los otros brindan, pero de todas formas vamos a incluirlo en la lista. Al igual que suPHP y FastCGI, CGI permite utilizar suEXEC para que el usuario ejecute los scripts (y no nobody). Es un handler muy versátil y que podemos modificarlo a nuestro gusto para adaptarlo a nuestras necesidades, aunque presenta la seria desventaja de ser el más lento de todos, lo cual lo ha llevado casi hasta la extinción hoy por hoy.

En resumen, ¿cuándo elegir cada uno?

  • suPHP: si la seguridad es tu mayor prioridad, entonces este handler es la mejor elección.
  • DSO: si prefieres rendimiento en lugar de seguridad, escoge este.
  • FastCGI: ideal para quienes buscan más seguridad que con DSO y más rendimiento que en el caso de suPHP. Solo recuerda que suele consumir mucha memoria y que puede presentar problemas con la programación de ciertos scripts.
  • CGI: deberías utilizarlo solo en caso de que alguno de los otros tres no esté disponible por alguna razón.

Ahora ya deberías tener un mayor entendimiento del funcionamiento de cada handler y probablemente ya sepas cuál es el adecuado para ti.


¿Te resultó útil el artículo? Compártelo con tus colegas: