Estás en Inicio / Editorial / PHP
24.05.2007
La optimización de aplicaciones PHP nos ayuda a desarrollar aplicaciones rápidas, pero que a la vez cuenten con calidad y eficiencia. Nuestros usuarios necesitan de aplicaciones que resuelvan los problemas en el menor tiempo posible.
Los sitios web necesitan ser rápidos, sin tomar en cuenta el tamaño del mismo. Es por ello que el principal objetivo al desarrollar una aplicación está en su optimización. En este artículo expondremos varios aspectos a tomar en cuenta para optimizar nuestras aplicaciones PHP.
Debemos tener en cuenta que si realizamos un buen diseño de nuestra ingeniería de software, nos ayudaría a escribir código con bajo costo. Llamamos bajo costo cuando nuestro código se ejecute rápidamente o este consuma menos recurso.
Cuando hablamos de optimizar nos referimos a que nuestras aplicaciones tengan un bajo costo, o sea, que se ejecuten con mayor rapidez pero que a la vez tenga calidad y eficiencia. El objetivo de optimizar las aplicaciones PHP es minimizar el código resolviendo el mismo problema.
A continuación veremos varias recomendaciones a seguir para lograr una mayor optimización de nuestras aplicaciones PHP:
Es mas rápido usar:
<strong><? echo “Maestros del Web”; ?></strong>
en lugar de...
<? echo “<strong>Maestros del Web</strong>”; ?>
PHP debe también interpretar el código HTML que se ha introducido entre sus etiquetas. Tomemos en cuenta lo siguiente:
Es mejor usar:
$entrada = array ("Azul", "Rojo", "Blanco", "Negro", "Amarillo");
$cantidad = count($entrada);
for ($i = 0; $i < $cantidad; $i++){
echo $entrada[$i];
}
en vez de ...
$entrada = array ("Azul", "Rojo", "Blanco", "Negro", "Amarillo");
for ($i = 0; $i < count($entrada); $i++){
echo $entrada[$i];
}
Otras cuestiones que debes tomar en cuenta son:
Las aplicaciones PHP en general son rápidas. Pero es muy importante Optimizar nuestra aplicación utilizando las recomendaciones anteriores. PHP cuenta con un manual muy bueno, amplio, que nos muestra todas sus funciones.
El tema de la optimización de las aplicaciones PHP es extenso y este artículo solo da algunos datos que te orientarán en la aplicación. Por ello te recomiendo que realices otras lecturas sobre la temática.
Califica esta nota:
Damián Pérez Valdés
Webmaster, Administrador de Sistemas, con experiencia en desarrollo web y de aplicaciones.
Si eres nuevo en Maestros del Web y te agradan nuestras publicaciones, te invitamos a suscribirte a nuestro Feed.
Sindícanos en: Google Reader, Bloglines, My Yahoo o My MSN | ¿Qué es el Feed?
35 comentarios en total.
También es mas óptimo usar comillas simples (’) en lugar de comillas dobles (”) si no hay variables que expandir ![]()
Buen artículo.
Pero no estoy de acuerdo en que deba dejarse a javascript la validación de los formularios ya que puede estar deshabilitado, disminuyendo la usabilidad y accesibilidad de la web.
Además, pueden ocurrir errores imprevistos por la suposición de que javascript controlará las entradas de los usuarios, siempre imprevisibles.
Un saludo
Rafa: Te estan diciendo que es para evitar consumir recursos y aliviar la carga del servidor al ejecutar codigo PHP para validar un formulario ..
Buen artículo, sin embargo este punto es bastante discutible:
“Realiza validaciones de formularios mediante javascript. No valides con PHP después de realizar un POST”…
Seguir este consejo puede resultar contraproducente
Si, es verdad que podemos encontrar navegadores con javascript deshabilitado, es mejor validar del lado del cliente primero, antes de realizar un metodo POST. Si no validamos con javascript, tendriamos que hacer esperar al usuario que recargue la pagina si hay error, sino ya seria al momento la validacion.
Eso es, para el usuario es mucho más cómoda la validación del lado del cliente pero no creo que ésta deba sustituir a la del lado del servidor, sino complementarla.
Coincido con David. La validación JS puede saltarse o manipularse y puedes recibir cualquier cosa en tu aplicación.
Yo valido con JS lo que puedo, pero vuelvo a validar todo con PHP. La primera validación la uso para evitarle al usuario el envío de la página con campos vacíos o datos erróneos y que la vuelva a recibir por estos errores. Pero la validación fuerte y de la que me fío, está siempre en mis aplicaciones.
Otra cosa a considerar es el tema de uso de constantes frentes a variables. Aquí les dejo un enlace a un artículo mío:
http://pablo.enlapc.com/2006/06/08/comparativa-variables-constantes-y-arrays-en-php/
Por otro lado, les dejo este artículo que está excelente:
http://www.php.lt/benchmark/phpbench.php
Hay cosas muy importantes para rescatar aquí.
La validación con javascript no tiene sentido si queremos que nuetras aplicaciones sean seguras. Que pasa si el cliente modifica el codigo javascript?
bueno, estamos hablando de utilizar javascript para validar formularios del lado del cliente, luego es logico realizar una validacion con PHP mediante el metodo POST para preveer que se modifique el javascript o que este este desactivado en el navegador.
Si “require_once” es muy lenta… cual es la alternativa?? ¿require()?
no es que haya alternativa, sino que deberías usarla lo mínimo posible.
Por otro lado: la POO. Si bien ayuda a reutilizar código y todo eso (que al estudiar java me lo metieron en la cabeza casi que a la fuerza), hay que tener en cuenta que la POO no es tan eficiente.
Si se busca eficiencia y rendimiento, no uses POO. Al menos no uses un montón de clases, división en capas, etc.
Para muestra un botón: usando POO, si quiero modificar el valor de un atributo, tengo que usar una función (setAtributo), mientras que de otra forma accedo directamente.
Si estamos hablando de usar comillas en vez de comillas dobles para ganar velocidad, tenemos que despedirnos de la POO. Sobretodo cuando suele implicar el uso de varios require() con el código de las clases que se van a usar.
La POO no está pensada para la máxima eficiencia, sino para facilitarle la vida al programador.
Muy bueno, gracias y coincido que no se le debe dejar a Javascript solamente la validacion, los ataques XSS y SQL Injections estan a la order del dia, y la validacion en Javascript cualquiera se la brinca.
Buen artículo, agrego algo más a lo de las sentencias SQL: Intentar tomar lo más que se pueda (pero lo necesario obviamente) en una sola sentencia, porque existe la costumbre de hacer varias sentencias para diferentes tablas en la misma DB. Se puede separar la tabla de la que se requiere obtener información por medio del operador punto ( . ).
Ej:
Es mejor hacer:
SELECT tabla1.campo1, tabla1.campo2, tabla2.campo3 FROM tabla1, tabla2..etc
Que:
SELECT * FROM tabla1
y después
SELECT * FROM tabla2
Sé que es algo bastante básico en SQL pero como también se puede hacer de esa manera (cargando la memoria bestialmente) me parece justo mencionarlo para los que comienzan. (no digo que sea un experto, incluso tal vez me equivoqué en la sintaxis pero lo digo porque antes yo lo hacía así porque no sabía que se podía hacer de otra forma).
Y otra cosa también: USAR CSS y decir NO a las tablas innecesarias para los diseños cargados, guardar un archivo .css en el cache del cliente te puede ayudar muchísimo a mejorar la velocidad de carga!
Hola.
Como bien apnta el articulo, el uso de @ para omitir errores consume recursos que podemos ahorrarnos.
El uso de la @ es a veces imprescindible a la hora de desarrollar, pero a la hora de poner el sistema en produccion, lo mejor es quitar todas las @ y usar error_reporting(0), lo cual ademas, nos evitará que se muestre información que pueda ser comprometida para la seguridad.
Respecto al tema de validar con javascript, yo siempre hago doble validación. La validacion javascript es muy comoda para el usuario, sobre todo usando el evento onBlur, lo cual percata al usuario del error conforme termina de escribir, pero como ya han comentado, esto es muy facil de ser evadido, por lo que siempre deberemos tener una segunda barrera, aunque, claro esta, consuma recursos.
Es interesante su articulo, pero a mi me parece tonto que los navegadores se desactiven para javascript, de hecho por ahi en foros del web expuse mi pagina y no faltó el “observador” que porque puse un javascript que pedia el nombre del usuario para darle un saludo personalizado ya pensaba en desactivar javascript, que quieren?, que regresemos a la era de puro html, sin javascript y de paso sin php?.
Tomaré en cuenta sus observaciones para optimizar mis codigos, gracias.
La tarea mas ardua es pasar a productivo…
validar cualquier formulario con el lenguaje de servidor es imprescindible, nunca confies en una validacion de javascript, si lo que te preocupa es la velocidad al tener que recargar la pagina, utiliza ajax
Pablasso: ajax es en parte javascript… ¿Que validación ajax puede funcionar con javascript deshabilitado…?
Por cierto, Las mejres validaciones son al menos dobles… también cuento esas validaciones parciales desde los eventos de los controles (change, blur, keyup…)
![]()
Manuel, a los más paranoicos nos gusta cargas rápidas
yo he bloqueado la carga de google analytics y adsense en mi maquina, son innecesarios para mi navegación jejej
pero, no es quitarle funcionalidad a una web?, creo que para mostrar paginas de solo informacion html puro esta muy bien, pero si queremos darle un plus debemos recurrir a javascript, el problema es que si la gente lo desactiva por la razón que sea creo que es como pegarle un tiro pues lo mas probable es que tampoco vean nada si la mayor parte del contenido se genera al vuelo con javascript.
Hay alguna manera de saber si la gente tiene o no activado javascript para mostrarles en caso de desactivarlo otra web con solo html?
Manuel, muchas web realizan este tipo de verificacion, un ejemplo de esto lo hace Google con Gmail y seguro que con mucho mas de sus servicios cuando no tenemos Javascript activado o cuando nuestra conexion esta muy lenta.
Pues bien, a mi me parece buen articulo, pero quisiera que me explicaran como es que se puede un usuario pasar la validación de jscript,
de verdad saben como, o solo comentan lo comentado, yo no tengo idea de como hacer eso, y me interesa porque estoy desarrollando una pagina, no soy experto ni nada por el estilo. Sobre lo del require_once, porque no usan el include_once() o es lo mismo? ![]()
Hola Madian, haz probado desactivar el javascript de tu navegador ? es muy probable que tu validacion no sea ejecutada.
Si, en efecto he desactivado el java script , y manejo esos casos, una forma de evitar que manden datos que uso es la siguiente: en el evento onsubmit del formulario, establezco return false; es decir que cualquier intento de enviar datos sin validar, por cualquier método, y un input de tipo button que en su evento onclick lanza la función que valida los campos, si todos los campos contienen información válida hace esto document.forms[item].submit(),eso es todo, de modo que si el usuario desactiva el java script, no se hace la validación, y menos el envío del formulario . Sé que no hay sitio 100% confiable en su seguridad, pero es una forma de evitar el paso de datos no deseados. Pero quisiera aclarar mi comentario anterior, allí hago referencia al comentario de que modifican el código java script en su PC, he ahí donde reside mi incógnita; y vuelvo a formular la misma cuestión ¿Alguien sabe cómo hacer eso? y me refiero con eso a como validar con código java script creado por cualquiera en su PC, validar un sitio en internet, y además que el sitio acepte ese código como propio. Siempre estoy en busca de debilidades en las páginas que programo, por eso es que di con este blog. Por el momento es todo, gracias por su espacio.
Validar con javascript?
Evidentemente el autor no sabe de lo que habla. Que manera de meterle ideas equivocadas al novato.
Hola Juan, siempre es util realizar una primera validacion con javascript del lado del cliente para validar que los datos en los formularios esten correctos y que el usuario no tenga que esperar a que se recargue la pagina. Comentanos tu punto de vista.
muy practico
vale…
pero como se cambian las variables globales por unas de aplicacion??
gracias
Hola nere, las variables de tipo globales debes definirlas en tu aplicacion, para definir variables puedes hacerlo por ejemplo:
static $variable;
hola tengo una consulta cuando uno usa arrays … y le pone como indice algo asi “nombre_array_12345678″… y el siguiente pone “nombre_array_12345678″… en ves de ponerle 1, 2, 3… esto consume Significativamente mas recursos O solo los que necesita por la diferencia de tamaño enlos indices es decir … “nombre_array_12345678″ es obviamente mas grande que solo 1 jeje Repondanmeeeeeeeeeee
Hola aqui les mando un enlace que enriquecen este articulo:
Para el autor: por favor, validación en servidor y cliente. Nunca solo en cliente. Si desactivo javascript y te meto en contraseña un ataque de inyección para mysql la mitad de los que han leido este articulo se lo comerian. Ademas, no hace falta validar, sino evitar que te la cuelen. Tambien mucho cuidado con los get, que si envian comandos te pueden hasta borrar parte de los archivos que tienes en tu servidor.
Hola Alber, todo esos problemas de inyeccion a traves de los metodos get y formularios, puedes surgir efecto en dependencia del metodo de Seguridad que emplees en el código de tu aplicacion. Existen varios formas para evitar estas inyecciones.
Hola de nuevo.
Por ahi lei que alguien preguntaba como detectar si el navegador no soporta javascript o el usuario lo ha desactivado.
Esto es facil con la etiqueta , hace tiempo que no uso javascript y olvide como se usaba exactamente, pero sabiendo como se llama, en google no tendras ningun problema.
Por otro lado, comentar y de paso publicitar el uso de la clase PEAR::DB2, que provee bastante buena seguridad frente a inyecciones SQL. (mirar metodos prepare() + execute() y query())
Solo eso. Un saludo y buena suerte a todos amigos !
Ala !! la etiqueta que decia arriba es “noscript” que la he puesto con sus respectivos < y > y el parseador de texto de la web se la ha cargado !!
3 trackbacks en total.
Maestros del Web es el punto de encuentro para los entusiastas de la red.
Creative Commons by-nc-sa 3.0 | Política de Privacidad | CMS: Wordpress