Foros del Web » Programando para Internet » PHP »

Motivos de Lentitud en PHP

Estas en el tema de Motivos de Lentitud en PHP en el foro de PHP en Foros del Web. Antes que anda queria felicitar y agradecer a Cluster y a los otros que respondieron un post anterior que ahora no encuentro (sobre php en ...
  #1 (permalink)  
Antiguo 22/04/2005, 13:35
 
Fecha de Ingreso: abril-2005
Mensajes: 16
Antigüedad: 12 años, 7 meses
Puntos: 0
Motivos de Lentitud en PHP

Antes que anda queria felicitar y agradecer a Cluster y a los otros que respondieron un post anterior que ahora no encuentro (sobre php en general).
Quería consultarles si es posible que me den una guia para optimizar mi codigo php ya que he visto es muy lento.Utilizo consultas sencillas (a veces no hay consultas) pero si require e includes (2 o 3 por pagina) y capas.Me gustaria saber si esto hace que deba esperar unos cuantos segundos (me han llamado la atencion por ello) en que me muestre la pagina.
Saludos!
Angela
  #2 (permalink)  
Antiguo 22/04/2005, 14:33
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 14 años, 6 meses
Puntos: 2
Pues a mi me ocurre lo mismo, yo tengo 1 sola conexión a DB y luego unos whiles.. uno de ellos tiene que leer 20 ID's (es decir, 20 lineas) y los demas son menos... no se porque tarda tanto en aparecer la pagina
__________________
I Love Programming...
  #3 (permalink)  
Antiguo 25/04/2005, 12:37
 
Fecha de Ingreso: abril-2005
Mensajes: 16
Antigüedad: 12 años, 7 meses
Puntos: 0
El tema de las capas sera mas conflictivo que los includes?, tiene algun ejemplo a mano de tecnicas de cacheado desde scripts? o al menos el proceso en si mismo.
estimo que debe deberan usarse algunas funciones de manejo de buffer pero no se como implementarlo ni cuales son recomendables.
saludos
  #4 (permalink)  
Antiguo 25/04/2005, 13:53
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
mmm .. creo que habría que ver primero realmente el tiempo de proceso de tu script PHP (incluido los accesos a tus BD si los hay) .. para eso puedes ver una de las últimas FAQ's que hay (lo siento no tengo el link a mano) que se basa en el uso de microtime() (www.php.net/microtime) para averigüar cual (realmente) es el tiempo de proceso de PHP .. Así vamos descartanto problemas de "lógica" PHP que puedan afectar al rendimiento o bien temas del lado del "cliente" (por ejemplo si usas algo de javascript .. o tu página en si .. etc .. ) y/o de la conexión en sí (no comentas si haces pruebas locales o como.

Un saludo,
  #5 (permalink)  
Antiguo 25/04/2005, 14:01
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 13 años
Puntos: 34
Además podrías postear el código, y podemos hacer un pingpong del mismo he ir mejorandolo;)
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #6 (permalink)  
Antiguo 25/04/2005, 14:20
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 14 años, 6 meses
Puntos: 2
El tiempo de proceso de mi pagina es de unos 0.200 seg (con ADSL 512), pero para ver la pagina entera tardo unos 5 segundos.... que es mucho tiempo para esta conexión...

Ademas lo que mas me molesta es que la pagina recien se ve cuando esta cargada totalmente (hasta la ultima imagen) y no es como tendría que ser, es decir, en todas las paginas uno va viendo aquello que se cargó, y no tiene que esperar a que todo este cargado... El tema es que no hay nada raro en el html... y los whiles que mensioné antes estan en la pagina, pero en un "iframe" por ello, tendría que cargar la pagina y si PHP es el que demora deberia verse en "blanco" solo el iframe...

Realmente no entiendo, no seguí con la construcción del sitio por este problema...
__________________
I Love Programming...
  #7 (permalink)  
Antiguo 25/04/2005, 14:43
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 13 años
Puntos: 34
Es que eso no depende de php solo, sino que depende del servidor, imagenes, diseño de tablas (por eso que no se ve todo hasta el final), y demás.
COmpara el tiempo carga promedio de 10 llamadas a esa .php, y hace una igual con el codigo html de ese resultado, guardala como html y hace lo mismo, llamala 10 veces y deci cual es el tiempo promedio de ambas.
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #8 (permalink)  
Antiguo 25/04/2005, 15:21
Avatar de lado2mx
Colaborador
 
Fecha de Ingreso: agosto-2001
Ubicación: Veracruz
Mensajes: 3.720
Antigüedad: 16 años, 4 meses
Puntos: 9
Ahora, no importa cuantas conexiones tengas, sino cuantas consultas estás ejecutando, si son superiores a 20 y de mucho texto.

Tal vez estás usando imágenes dentro de base de datos, esto alenta mucho a la base de datos. Porque simplemente haces de algo ligero, muy pesado para la base de datos, y con ello en la carga de tu página.
  #9 (permalink)  
Antiguo 25/04/2005, 16:54
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 14 años, 6 meses
Puntos: 2
jaja, pues me rio porque yo estoy haciendo todo lo contrario... 0 imagenes, creo que no llego a 10 consultas a DB y 1 o, como mucho, 2 conexiones.... En fin, mi problema no es por PHP, debe ser algo del HTML que esta funcionando pesimo.

Pueden ver la pagina en:
http://www.solo-racing.com.ar/php/
user: tomas
pass: webx

Lo unico "pesado" que tengo son las animaciones flash, pero deberia cargar todo y verse las precargas de esta, pero no se porque razon queda todo blanco hasta que carga...
__________________
I Love Programming...
  #10 (permalink)  
Antiguo 25/04/2005, 16:56
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
El tiempo de proceso de mi pagina es de unos 0.200 seg (con ADSL 512),

cara al proceso "puro" de PHP .. que uses una ADSL o una conexión de una LAN común .. no influye para nada .. Ese dato sobre tu "ADSL" influye en el paso de datos entre "servidor y cliente" o viceversa ..

Fijate en el peso de tus imagenes... y en el peso total de tu página generada (en bytes) ... También si esas imagenes están en tu servidor apuntando a rutas relativas (../imagenes .. etc) o bien a http://www.tal.tal .. y si es así que sean todas de tu própio hosting .. no de otros ..

En definitiva ya creo que PHP pasó la prueba .. esos 0.2 seguntos digamos que podría ser "aceptable" en tu caso .. Ahora toca la parte "cliente" .. tu conexión .. el estado de carga del servidor HTTP en general .. etc ..

Un saludo,
  #11 (permalink)  
Antiguo 25/04/2005, 17:31
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 14 años, 6 meses
Puntos: 2
Influye en algo si una imagen (Estando siempre en nuestro servidor) se llama de forma relativa o completa?? Tengo de las dos... las imagenes de todo el sitio las llamo relativamente (/img/tal_imagen.jpg) y la de las noticas las cargo de forma total (http://www.mipagina.com/img/tal_imagen.jpg) ya que las uso en varios ficheros distintos y es mas rapido (para administrar) asi...

En fin, habia posteado este problema en el foro HTML pero nadie colaboro... volvere a hacerlo en algunos días si no recivo respuestas... o busquera por otro medio, no se.

Gracias por tu informacion Cluster, siempre aciertos.
__________________
I Love Programming...
  #12 (permalink)  
Antiguo 25/04/2005, 19:35
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 12 años, 8 meses
Puntos: 2
Hola

Lo que mencionas acerca de que una pagina se ve por partes o se va viendo poco a poco depende del sistema de templates que estas usando, hemos tocado ese tema en este foro, como "Sistemas de Templates", buscalo, para que mires como se maneja la salida de html, por otra parte, es mejor tener las imagenes como relativas, en mi gusto, y no tiene nada de malo.

Lo lento puede ser por varias razones:

1. Flash pesado (aunque sean precargadas - depende del template)
2. Imagenes pesadas (aunque sean precargadas - depende del template)
3. La consultas a tu base de datos es pesada, pruebala directo en tu servidor de bases de datos, luego desde el PHP, indica aqui como haces la conexion y la consulta eso puede hacerlo lento.
4. En tu PHP, si tienes muchos ciclos, etc.
5. Por ultimo la descarga hacia el cliente por lo que mencionas del DSL no debe ser lenta, pero revisa tambien ti router, hub, etc (si estas en un LAN), que sean rapidos, porque hoy por hoy hay lugares que aun tienes 10/T, y pues ya no son para estos trotes.

Suerte!!
  #13 (permalink)  
Antiguo 26/04/2005, 07:50
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
A todo esto no comentas que "PC" ni "navegador" de pruebas usas ... Por ejemplo (no sé si es tu caso) .. si usas mucho "javascript" en una página .. a un PC lento se le va hacer pesado procesar esa página en el cliente .. También si usas algún sistema de compresión de páginas .. si bien a PHP por ser un servidor "potente" no le va a influir mucho su parte de proceso .. tal vez la parte de proceso (descomprimir) en ese PC/navegador se le haga pesado.


Por lo demás .. acabo de probar tu página (no entré a la sección de Administración ..solo el resto del sitio en general) .. en la conexión de mi trabajo (un ADSL común, Pentium IV bajo Windows XP e IE 6.x) .. me va perfecto en cuento a carga tu página .. incluido todo el flash que ahí tienes para menus y demás cabeceras ..

Un saludo,

Última edición por Cluster; 27/04/2005 a las 08:08
  #14 (permalink)  
Antiguo 26/04/2005, 10:26
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 12 años, 8 meses
Puntos: 2
De hecho

La pagina si es lenta de cargar, mucho flash, etc, entonces eso hace que si sea lento.

La carga es perfecta pero si se observa un tiempo de respuesta lento, unos 4 5 segundos, pero para el caso de su pagina no es tan lento.
  #15 (permalink)  
Antiguo 26/04/2005, 12:23
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 14 años, 6 meses
Puntos: 2
Pues uso Internet Explorer (6) y Firefox (este ultimo solo para pruebas), En IE se ve ese "lapso" de tiempo (4 o 5 seg) que queda todo blanco, en cambio en Firefox se va viendo a medida que carga. Mi PC es un Pentium IV 3.00GHz.

El tema es que, a pesar de que ustedes dicen que tiene mucho flash, son muy livianos (para estas conexiones), el mas pesado pesa 58KB (la "cabecera") cuando en mis otras paginas las peliculas pesan no menos de 100KB, ademas, antes ni precarga tenian, ahora tienen precargar externa (es decir, que al iniciar la pagina solo carga una pelicula de 4Kb...), por ello no entiendo el lapso de demora.

Javascript si uso bastante, pero no en la "carga" de la pagina, sino despues, tengo varios onclick's y precargas de imágenes (Estas las cuento como parte de la pagina).

En fin, seguire buscando la forma de mejorar eso.. no me importa que tarde 5 segundos en cargar, el tema es que si en 5 seg queda todo blanco el usuario puede pensar cualquier cosa... que no anda, que se colgo...
__________________
I Love Programming...
  #16 (permalink)  
Antiguo 26/04/2005, 12:39
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 12 años, 8 meses
Puntos: 2
Mira este tema...

"Sistemas de Templates"

http://www.forosdelweb.com/showthrea...emas+Templates

Creo que algo asi andas buscando.
  #17 (permalink)  
Antiguo 26/04/2005, 13:03
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 14 años, 6 meses
Puntos: 2
Porque crees que busco algo así?, realmente en el tema que describes solo hay una discución sobre que "motor" les gusta mas, no entiendo cual es el fin de usar un template en mi pagina, ya que es modular y eso sería como un template si te pones a pensar.. el diseño de todo el sitio esta en 1 solo archivo...

Igualmente leere mas sobre los templates que describen en ese hilo para ver si encuentro la relacion con mi problema.

Saludos.
__________________
I Love Programming...
  #18 (permalink)  
Antiguo 26/04/2005, 13:12
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 12 años, 8 meses
Puntos: 2
Resumen

Tu dices tener problemas con que el usuario no ve nada cuando entra...

Sabes que puedes hacer algo como:

Imprimir el TOP de tu pagina - Sera inmediato
PROCESAR TU PAGINA - los 5 segundos
Imprimir el BOTTOM de tu pagina - sera inmediato

Mira MSN, siempre miras rapidamente el TOP de la pagina mientras se carga lo demas, por eso decia que ese tema de como sacar el HTML desde tu ASP te puede servir, pero no se realmente como, porque no se que tipo de templates, o forma de escribir el html estas usando, pero el tema se refiere a como SACAR a PANTALLA el HTML que se esta generando en una pagina.

Suerte!!
  #19 (permalink)  
Antiguo 26/04/2005, 14:28
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 14 años, 6 meses
Puntos: 2
Bueno, vere el sistema que usan estos motores para ver si encuentro algo que me pueda ayudar.

Lo que mas me intriga es el "POR QUE", porque en IE no se ve lo cargado y en Firefox si? será alguna configuración de IE?, en fin... tiempo al tiempo, no me va a ganar esto!

Gracias a todos.
__________________
I Love Programming...
  #20 (permalink)  
Antiguo 26/04/2005, 14:42
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 14 años, 6 meses
Puntos: 2
Neuron, estuve viendo el hilo que me recomendaste. Cuando hablas de MSN hablas del portal de ellos?, pues hablas de su METODOLOGIA, que a simple vista (por lo que tu explicaste) es lo mismo que hago yo.

El problema es el siguiente, al entrar al sitio de MSN (http://www.msn.com/) me ocurre lo mismo que al entrar al mio, hay un N lapso de tiempo en donde no se imprime nada al navegador (por ende, pagina en "blanco"), obviamente, este tiempo es mucho menor ya que tiene cosas "menos pesadas", pero incluso, en el sitio de MSN tambien me pasa esto ingresando con Firefox (cosa que no me pasa en mi sitio, ya que con firefox se va viendo de a "retazos" cargados, como deveria ser...).

En fin, no se si me explique...

La estructura de mi sitio es simple:

1- cargo cabecera
2- Cargo "laterales" (como veran en mi sitio, la "botonera" y los iframes).
3- Función PHP que carga el modulo (dependiendo de una variable GET)
4- Cargo el pie de pagina

Por ello proceso en la pagina "cargadora" hay 1 solo, el que carga el modulo que a su vez puede tener otro poceso (en el caso de la pagina principal tiene un proceso para recojer las noticias), el resto de los procesos no tendrían que hacer a la demora del sitio, ya que estan ubicados en los "iframe", estos deberían ser los que se demoren, o no?

El problema es que al abrir el sitio uno puede ver en la statusbar

- Abriendo N elemento (index)
- Abiendo Y.php (iframe)
- Abriendo X.php (iframe)
- Muestra la pagina

Cuando en realidad deberia ser:
- Abriendo N elemento (index)
- Muestra la pagina
- Abiendo Y.php (iframe)
- Abriendo X.php (iframe)

Por lo menos, así se "va viendo" en Firefox...

No se si entienden lo que digo, no me es facil explicarles.

Saludos.
__________________
I Love Programming...
  #21 (permalink)  
Antiguo 26/04/2005, 16:42
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 12 años, 8 meses
Puntos: 2
Creo que entiendo

Y tu pagina la veo tambien cuando esta toda completa, no antes, pero si tu estas haciendo lo que dices, entonces me parece que estas correcto, bueno, en MSN cierto que no todas las paginas las tienen igual, donde se notan los pasos es cuando estas en noticias.

http://www.t1msn.com.mx/

http://www.t1msn.com.mx/Dinero/tudinero/

Ahio notaras rapido lo que te digo, tu dices:

1- cargo cabecera
2- Cargo "laterales" (como veran en mi sitio, la "botonera" y los iframes).
3- Función PHP que carga el modulo (dependiendo de una variable GET)
4- Cargo el pie de pagina

Mi duda, dices cargo, etnonces tienes algo como:

1. cargo cabecera --> echo $CodigoCabecera
2- Cargo "laterales" -> echo $CodigoLaterales
3- Función PHP que carga el modulo --> echo $CodigoModulo
4- Cargo el pie de pagina --> echo $CodigoPie

Si es asi, entonces si es raro que no veas todo procesado paso a paso como dices que pasa el FireFox, entonces es posible que si sea algo en la configuracion del Explorer.

Sin embargo, si tienes algo como:

1. cargo cabecera
2- Cargo "laterales"
3- Función PHP que carga el modulo
4- Cargo el pie de pagina

5. echo $CodigoCabecera . $ CodigoLaterales . $CodigoModulo . $CodigoPie

Entonces el comportamiento que miras es normal, y con este metodo aun puedes ver todo a pedazos, no por funcionalidad en como compila tu pagina, sino que el HTML se esta transfiriendo al cliente y esta interpretando desde arriba hasta abajo, eso puede estar pasando, espero que te ayude este comentario.

Suerte!!
  #22 (permalink)  
Antiguo 26/04/2005, 17:46
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 14 años, 6 meses
Puntos: 2
pues no, yo tengo todo el HTML de la pagina normal (pie, cabecera costados) y dentro de una tabla tengo la funcion que llama al modulo.

Algo asi:

Código HTML:
<html>
<head>
<!-- TODO EL HEAD -->
</head>
<table>
  <tr>
    <td>cabecera</td>
  </tr>
</table>
<table>
  <tr>
    <td>botonera</td>
    <td>funcion PHP que carga el modulo</td>
    <td>tablas de posiciones y demas que se encuentra a la derecha</td>
  </tr>
</table>
<table>
  <tr>
    <td>pie de pagina</td>
  </tr>
</table>
</body>
</html> 
Algo asi se entiende? y la funcion PHP lo que hace es un INCLUDE segun la variable que paso via GET.

Antes usaba todos includes, es decir:
Código PHP:
<?php 
include("cabecera.php");
include(
"contenido.php"); //botonera + funcion php + lateral derecho
include("pie_de_pagina.php");
?>
Pero estaba constantemente usando 2 includes que podia evitar, me parecio mas correcto hacerlo de la forma que describí arriba..
__________________
I Love Programming...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:55.