[ TEMIGA ]
Entradas etiquetadas con debug
Sistema de Enrutamiento en KumbiaPHP
1 May
Los enlaces y las URL requieren de un tratamiento especial en cualquier framework para aplicaciones web. El motivo es que la definición de un único punto de entrada a la aplicación y el uso de helpers en las vistas (Views), permiten separar completamente el funcionamiento y el aspecto de las URL. Este mecanismo se conoce como “enrutamiento” (del inglés “routing”). El enrutamiento mas que ser una utilidad curiosa, es una herramienta muy útil para hacer las aplicaciones web más fáciles de usar y más seguras.
El enrutamiento es un mecanismo que reescribe las URL para simplificar su aspecto. Antes de poder comprender su importancia, es necesario dedicar unos minutos al estudio de las URL de las aplicaciones web.
Más >
No te confies de todo lo que dice el manual de PHP
17 May
Hace unos días haciendo unos benchmark a kumbiaphp framework en comparación con la vieja estructura de directorios de alguna para ver si la nueva estructura directorio genero efectos de rendimientos sobre el framework que seria lo ideal.
Bien lo cierto es que cuando se corrió el benchmark los #request/seg no cuadraban y no era lógico ya que la nueva estructura se depuraron ciertas cosas que sobraban, en el benchmark los números obtenidos eran tan locos que la vieja estructura tenia unos 10 #req/seg por encima :-S no era nada normal esto, nos toco recurrir a las buenas prácticas de desarrollo y que ya es una constante dentro del Equipo de Desarrollo de kumbiaphp hacer debug y profiler con xdebug :-), esto para detectar donde estaban los “cuellos de botellas” que nos hacían mas lento que la versión anterior.
El detalle estaba en una función de PHP llamada extract, dentro de kumbiaphp framework se utiliza esta dicha función en el core ya que el framework implementa las variables de instancia (algo muy parecido de Rails), es decir todo lo que llame en mi controlador $this->var o sean atributos públicos, en la vista los tengo disponible como $var, volviendo al punto esta funcion nos permite hacer lo antes dicho pero recibe ciertos parámetros uno es unas constantes entre ellas EXTR_OVERWRITE (Si hay colisión, sobrescribe la variable existente) nosotros decidimos sacar la constante porque en la documentación Oficial de PHP dice claro lo siguiente:
Si no se especifica tipo_extraccion , se asume que vale EXTR_OVERWRITE.
Bien como sabemos el xdebug nos da mucha información y la misma nos decía que el “cuello de botella” estaba allí ya que tomamos un profiler de la versión anterior y los tiempos eran totalmente distintos en ese punto. viendo en detalle la función extract decidí olvidar lo que dice el manual de PHP y pasar de forma implícita el tipo de extracción en este caso EXTR_OVERWRITE, una vez hecho el cambio vuelvo a correr el benchmark y como por arte de magia ahora obtengo los resultados esperados la nueva estructura ha causado efecto en velocidad y esta ~10 #req/seg por encima respecto a la vieja estructura.
Conclusión.
Tal como dice el titulo del post no hay que confiarse de lo que dicen algunos manual, ya que pueden ocurrir excepciones como la que comente aqui. En el caso descrito fue detectado este detalle porque se hizo uso de las buenas prácticas de desarrollo y de las herramientas disponibles y el turno fue para una que muchos obvian (xdebug), que si le damos el uso correcto podemos ganar mucho en nuestros desarrollos.
La Regla 20/80. Buenas Prácticas de Desarrollo Parte II
30 Ago
Siguiendo la dinámica de las Buenas Practicas de Desarrollo en PHP (ver Parte I) esta vez tocare un tema muy importante el cual va relacionado con la rapidez ó el tiempo de respuesta con la cual se entrega una página web, un estudio de YAHOO, nos dice que el tiempo total de carga del home de algunos sitios de Internet existe un porcentaje de responsabilidad donde el servidor tiene el 20% (entregar el index.html) y el restante 80% queda del lado cliente (cargar los js, css, flash, img, etc…), por ende todas las optimizaciones que realicemos del lado cliente tendrá un impacto del 80%.







Comentarios Recientes…