Buenas prácticas en el desarrollo de aplicaciones con Symfony
- Área: Construcción de Aplicaciones por Capas
- Grupo: PHP
- Tipo de pauta: Directriz
- Carácter de la pauta: Recomendada
- Tecnologías: PHP
Se ofrece una serie de indicaciones destinadas a mejorar la eficiencia y el rendimiento de las aplicaciones que se desarrollan mediante el Framework Symfony
Pautas
Título | Carácter |
---|---|
Optimización del servidor | Obligatoria |
Número de objetos procesados | Recomendada |
Consultas mediante Joins | Obligatoria |
Helpers por defecto | Obligatoria |
Borrado selectivo de la caché | Obligatoria |
Almacenamiento de la caché | Obligatoria |
Optimización del servidor
Asignar el valor off a la variable magic_quotes_gpc del archivo php.ini para optimizar las conexiones
Para que no existan cuellos de botella en elementos externos a Symfony debemos mantener el servidor bien optimizado. Para ello hay que asignar el valor off a la variable magic_quotes_gpc del archivo php.ini, de manera que evitemos que PHP escape todas las comillas de los parámetros de la petición. Además, tendremos que usar un acelerador de PHP (como por ejemplo, APC, XCache, o eAccelerator), en el servidor de producción, ya que mejora el rendimiento de PHP y no tiene ningún inconveniente, y desactivar todas las herramientas de depuración.
Número de objetos procesados
Limitar el número de objetos que se procesan
Los métodos del modelo deben optimizarse para que devuelvan solamente un número limitado de registros, siempre que no se necesiten todos. De esta forma aumentamos la velocidad de ejecución de las consultas ya que está es directamente proporcional al número de resultados devueltos.
Consultas mediante Joins
Minimizar el número de consultas usando Joins
Mientras se desarrolla una aplicación, se debe controlar el número de consultas a la base de datos que realiza cada petición. Si el número de consultas crece de forma desproporcionada, seguramente es necesario utilizar un Join.
Helpers por defecto
Reducir los helpers por defecto
Debemos eliminar, de las lista de grupos de helpers estándar, aquellos grupos que estemos seguros que no vamos a utilizar, para evitar que se tenga que procesar el archivo del helper en cada petición.
Borrado selectivo de la caché
Borrar partes de la cache de forma selectiva
Hacer un borrado selectivo de la caché es más rápido y eficiente que borrar la caché de forma completa
Almacenamiento de la caché
Guardar los datos de la caché en una base de datos
Debemos guardar los datos de la caché en una base da datos SQLite ya que la caché de las plantillas es mucho más fácil de leer y de escribir cuando el número de elementos de la caché es muy grande. Si la aplicación hace un uso intensivo de la caché, los archivos almacenados en ésta acaban en una estructura de directorios muy profunda, por lo que utilizar el almacenamiento de SQLite mejora el rendimiento de la aplicación.
Además, borrar una caché almacenada en el sistema de archivos requiere eliminar muchos archivos, por lo que es una operación que puede durar algunos segundos, durante los cuales la aplicación no está disponible. Si se utiliza el almacenamiento de SQLite, el proceso de borrado de la caché consiste en borrar un solo archivo, precisamente el archivo que se utiliza como base de datos SQLite. Independientemente del número de archivos en la caché, el borrado es instantáneo.
Contenidos relacionados
Código | Título | Tipo | Carácter |
---|---|---|---|
RECU-0263 | Symfony | Referencia | Recomendado |