martes, 26 de enero de 2021

5 Errores comunes programando en PHP y cómo prevenirlos

 Ahora que los desarrolladores pueden rastrear los problemas exactos que causan cuellos de botella en el rendimiento en aplicaciones PHP, veamos cinco errores comunes que cometen los desarrolladores al crear aplicaciones PHP y cómo pueden resolverlos.

Error 1: Hacer demasiadas consultas a la base de datos

PHP se encuentra con el mismo tipo de restricciones que los desarrolladores tendrían con otros lenguajes, como demasiadas consultas de bases de datos. Los desarrolladores no son expertos en bases de datos. La mayoría no conocen todos los matices de la base de datos que utilizan. A menudo, no están usando su capa de acceso a la base de datos de manera óptima, por lo que terminan haciendo demasiadas consultas a la base de datos o generando consultas a la base de datos que no usan índices.

Las bases de datos también funcionan de manera diferente bajo diferentes tipos de carga. Una base de datos que se ejecuta en una computadora portátil con decenas de megabytes de memoria se comporta de manera diferente a una base de datos de producción con un gigabyte, ya que se utilizan diferentes estrategias para seleccionar qué datos mirar. Las consultas que funcionaron en la máquina local de un desarrollador o en el entorno de ensayo pueden funcionar de manera diferente en producción.

Las mitigaciones para un rendimiento deficiente de las consultas de la base de datos son agregar consultas en caché y ajustar. El almacenamiento en caché ayuda a reducir la cantidad de consultas enviadas a la base de datos cuando el resultado ya se conoce o se accede con frecuencia. Por ejemplo, el artículo "más reciente" de un sitio de noticias cambia con menos frecuencia de la que se lee. Al almacenar en caché los resultados, los desarrolladores pueden mejorar el rendimiento leyendo los resultados del caché en lugar de la base de datos. Ajustar las consultas de la base de datos generalmente implica agregar índices adicionales en los datos que se usan con frecuencia en condiciones o combinaciones. También puede implicar el almacenamiento de datos de formas que requieran menos combinaciones para acceder.

Error 2: Cargar demasiados archivos


Con otros lenguajes de programación, las aplicaciones se inician y luego mantienen el código y los datos asociados en la memoria. Con PHP, sin embargo, no existe un estado de aplicación persistente: los archivos se recargan con cada solicitud. Cuando los desarrolladores no tienen en cuenta esto, pueden encontrarse con el problema de cargar demasiados archivos, lo que consume los recursos del sistema y ralentiza el rendimiento.

Los desarrolladores pueden resolver este problema activando el almacenamiento en caché del código de operación (código de operación). Como muchos lenguajes, PHP procesa el código fuente en códigos de operación, que luego se ejecutan en el tiempo de ejecución de PHP. La conversión de código PHP a códigos de operación ocurre en cada solicitud, ya que PHP no tiene un estado compartido. Si bien analizar el código fuente y generar códigos de operación es relativamente barato, los costos se acumulan a medida que una aplicación maneja más tráfico. Al habilitar el almacenamiento en caché del código de operación, el paso de análisis del código fuente se puede omitir, lo que produce ganancias de rendimiento medibles.

Error 3: Configuración incorrecta del servidor web

A diferencia de otros lenguajes de programación en los que el servidor web es parte del lenguaje, PHP se ejecuta dentro de un servidor web. Apache HTTP Server y Nginx son los dos más utilizados. El servidor web es otra capa que los desarrolladores de PHP deben supervisar. Desde elegir un modelo de proceso en Apache hasta ajustar PHP-FPM (Fast Process Manager) cuando se usa Nginx, existen algunas opciones de ajuste para usar.

Por ejemplo, los desarrolladores deberán configurar la cantidad de procesos de trabajo que se crearán y la frecuencia con la que se reciclarán. Si no tienen suficientes trabajadores (procesos en ejecución) disponibles, sus usuarios tendrán que hacer cola y esperar a que un trabajador esté libre. Si tienen demasiados trabajadores, podrían quedarse sin memoria durante un momento de mucha actividad. Los desarrolladores pueden utilizar la cantidad de memoria que normalmente utiliza una aplicación y los recursos disponibles en sus servidores como guía para elegir la cantidad de trabajadores.

Error 4: Malas prácticas de seguridad

PHP permite a los desarrolladores combinar una variedad de paradigmas de programación y cambiar entre código HTML y PHP con fluidez. Sin rigor, esto puede resultar rápidamente en un código desordenado que es difícil de mantener. Esta flexibilidad es una de las razones por las que PHP es un lenguaje excelente para principiantes, pero puede convertirse fácilmente en una debilidad que puede exponer las aplicaciones a problemas de seguridad como cross-site scripting (XSS) e inyección SQL (SQLi).

Los desarrolladores pueden mitigar estos riesgos mediante el uso de bibliotecas, herramientas y frameworks maduros. El uso de una biblioteca de plantillas como Twig ayuda a evitar el scripting entre sitios al codificar automáticamente en HTML todas las variables que se muestran en las plantillas. El uso de un mapeador relacional de objetos (ORM) o una biblioteca de abstracción de bases de datos puede evitar la inyección de SQL mediante el uso de declaraciones preparadas.

Error 5: No usar tipos estrictos y sugerencias de tipo

PHP tiene un sistema de tipos indulgente. Históricamente, PHP ha favorecido los tipos de coerción sobre la creación de errores. Esto puede llevar a trampas como dividir números por palabras y obtener resultados "útiles", pero también crear errores en tiempo de ejecución. Para ayudar a prevenir este tipo de errores, los desarrolladores deben habilitar "strict_types" y usar herramientas como Psalm y PHPStan como parte de su proceso de desarrollo. Estas herramientas analizan el código de forma estática y, al observar qué tipos de datos se utilizan en su aplicación, pueden señalar problemas potenciales antes de que se conviertan en problemas reales que afecten a los usuarios.

7 razones para no usar Laravel en tu proyecto de PHP

En más de 40 años de experiencia como programador y director de proyectos de programación, he aprendido que cada requerimiento tiene mejores...