Foros del Web » Programando para Internet » PHP »

PHP-MySQL-XML : Carga de datos muy lenta

Estas en el tema de PHP-MySQL-XML : Carga de datos muy lenta en el foro de PHP en Foros del Web. Hola, hace unos 4 meses que vengo estudiando PHP y trabajando en una tienda virtual y ahora que comencé a cargar los datos me doy ...
  #1 (permalink)  
Antiguo 12/06/2007, 15:19
Avatar de sidney rees  
Fecha de Ingreso: julio-2006
Ubicación: Argentina
Mensajes: 334
Antigüedad: 17 años, 9 meses
Puntos: 16
PHP-MySQL-XML : Carga de datos muy lenta

Hola, hace unos 4 meses que vengo estudiando PHP y trabajando en una tienda virtual y ahora que comencé a cargar los datos me doy cuenta que los tiempos de carga para 130 productos ronda los 11 segundos.... o sea, una eternidad para los tiempos de internet.

El problema es que la tienda virtual está hecha enteramente en Flash y necesito recibir el catalogo en formato XML.

Entonces, presiono un botón que llama a un archivo PHP que pide los datos a MySQL y luego genera el XML. (Estoy casi seguro que esto es lo que ocaciona la letitud del sistema, estas funciones no deben de estar bien optimizadas)

Probé leyendo directamente desde los archivos xml que ya tengo creados en el servidor y los tiempos se optimizaron, pero no tanto.

Ahora me pregunto:
¿Que tan lento es XML?
¿Contratando un mejor servidor, aumentaria la velocidad de carga? (Agrego que cada producto tiene una imagen descriptiva) ¿Aumentaria la velocidad de carga de las imagenes o eso está relaciona con la velocidad a conexión que c/u tenga?
¿Existe alguna forma de optimizar la velocidad de creación del catalogo en xml? (Cuando llamo a la base de datos solo traigo los datos estrictamente necesarios)

Cada producto tiene una descripción de hasta 600 caracteres, el tiempo de carga de la descripción es alto o en realidad es minimo teniendo en cuenta que la conexión con la base ya se estableció.

Bueno, espero me puedan dar una manito con esto. (Las ideas locas tambien son bienvenidas)

Desde ya muchas gracias. ^^,
__________________
¿Tienes problemas para terminar tu proyecto? Nosotros te ayudamos, visitanos en Sidneyrees.com
  #2 (permalink)  
Antiguo 12/06/2007, 16:02
Avatar de Falhor  
Fecha de Ingreso: diciembre-2005
Ubicación: Buenos Aires
Mensajes: 425
Antigüedad: 18 años, 4 meses
Puntos: 5
Re: PHP-MySQL-XML : Carga de datos muy lenta

Qué tan lento es XML no sé, pero obviamente la velocidad de carga depende tanto del servidor como de la conexion del cliente...

Y lo de qué forma podés optimizarlo no sé... Y menos si no veo el código.
  #3 (permalink)  
Antiguo 12/06/2007, 16:49
Avatar de sidney rees  
Fecha de Ingreso: julio-2006
Ubicación: Argentina
Mensajes: 334
Antigüedad: 17 años, 9 meses
Puntos: 16
Re: PHP-MySQL-XML : Carga de datos muy lenta

Upsss... este el PHP que genera el XML, está un poco caotico porque lo estuve modificando y luego me decidí por hacer directamente los archivos XML.

Gracias por tu ayuda Falhor!

Cita:
<?php
include('config.php');

$categoria = utf8_decode($_POST["categoria"]);
$tipo = utf8_decode($_POST["tipo"]);
$cat = utf8_decode($_POST["cat"]);

if ($tipo=="Categoria" && $categoria=="Categorías"){$name = 1;}
else if ($tipo=="Categoria"){$name = 2;}
else if ($tipo=="Sub" && $categoria=="Todas"){$name = 3;}
else if ($tipo=="Sub") {$name = 4;}
else if ($tipo=="Busqueda"){$name = 6;};

switch ($name) {
case 1:
$productos=mysql_query("SELECT id, nombre, descripcion, precio, imagen, categoria, marca, highlight1, highlight2 FROM productos");
break;
case 2:
$productos=mysql_query("SELECT id, nombre, descripcion, precio, imagen, categoria, marca, highlight1, highlight2 FROM productos WHERE categoria = '$categoria'");
break;
case 3:
$productos=mysql_query("SELECT id, nombre, descripcion, precio, imagen, categoria, marca, highlight1, highlight2 FROM productos WHERE categoria = '$cat'");
break;
case 4:
$productos=mysql_query("SELECT id, nombre, descripcion, precio, imagen, categoria, marca, highlight1, highlight2 FROM productos WHERE categoria = '$cat' AND highlight1 = '$categoria'");
break;
case 5:
$productos=mysql_query("SELECT id, nombre, descripcion, precio, imagen, categoria, marca, highlight1, highlight2 FROM productos WHERE nombre LIKE '$categoria' OR categoria LIKE '$categoria' OR highlight1 LIKE '$categoria' OR highlight2 LIKE '$categoria' OR marca LIKE '$categoria'");
break;
}

$Return="<?xml version=\"1.0\" encoding=\"utf-8\"?><!DOCTYPE catalog []><catalog>";

while ($field = mysql_fetch_object($productos))
{
$Return.="<product ";
$Return.="productId=\"".$field->id."\">";
$Return.="<name>".$field->nombre."</name>";
$Return.="<description>".$field->descripcion."</description>";
$Return.="<price>".$field->precio."</price>";
$Return.="<image>".$field->imagen."</image>";
$Return.="<series>".$field->categoria."</series>";
$Return.="<highlight1>".$field->highlight1."</highlight1>";
$Return.="<highlight2>".$field->highlight2."</highlight2>";
$Return.="<marca>".$field->marca."</marca>";
$Return.="</product>";
}

$Return.="</catalog>";

mysql_free_result($productos);
print $Return;
?>
__________________
¿Tienes problemas para terminar tu proyecto? Nosotros te ayudamos, visitanos en Sidneyrees.com
  #4 (permalink)  
Antiguo 12/06/2007, 17:40
 
Fecha de Ingreso: junio-2007
Mensajes: 10
Antigüedad: 16 años, 10 meses
Puntos: 0
PHP-MySQL-XML

Alguien podría ayudarme diciendome que es lo que hago mal para que no se me genere el xml desde una Db llamada PAN y la tabla PANNS, con los campos: pann_quien, pann_aquien, pann_porque, pann_tiempo y pann_fecha


<?php
// Parametros de conexion a MySQL
$db_server = "localhost";
$db_user = "user";
$db_pass = "password";

// Conexion a la base de datos
$conexion = mysql_connect($db_server,$db_user,$db_pass);
mysql_select_db("pan", $conexion);

$sql = "SELECT * FROM panns";
$result = mysql_query($sql, $conexion);
$item = mysql_fetch_assoc($result)

// Header para escribir XML
header('Content-type: text/xml; charset="iso-8859-1"', true);

// Escribimos el archivo XML
echo "<?xml version="1.0" encoding="iso-8859-1"?>";
echo "<pan>";
do {
echo "<seg quien='".$pann_quien."' aquien='".$pann_aquien."' porque='".$pann_porque."' tiempo='".$pann_tiempo."' fecha='".$pann_fecha."'/>"
} while ($item = mysql_fetch_assoc($result));
echo "</pan>";
?>

P.D: soy nuevo en todo esto del php. Gracias de antemano.
Mi mail es [email protected]
  #5 (permalink)  
Antiguo 12/06/2007, 20:02
Avatar de sidney rees  
Fecha de Ingreso: julio-2006
Ubicación: Argentina
Mensajes: 334
Antigüedad: 17 años, 9 meses
Puntos: 16
Re: PHP-MySQL-XML : Carga de datos muy lenta

El PHP? Si lo es el primer error lo tienes en el while.

Es
while (){}
No
{} while

Edito: Ah!! Upsss... era un Do-While.... bueno, de todos modos recomiendo que utilices While, sino el bucle se repite una vez mas de las que necesitas... y creo que termina por generarte un elemento vacio que es donde esta el error.

Luego el header está mal, de seguro te da error. Es así:

$Return="<?xml version=\"1.0\" encoding=\"utf-8\"?><!DOCTYPE catalog []><catalog>";

NO

header('Content-type: text/xml; charset="iso-8859-1"', true);

Luego lo concatenas con los demás datos.
Prueba con eso y luego nos comentas que otros errores te tiró.
Sugerencia: utiliza el codigo de mi sistema que funciona.
Sugerencia 2: Copia y pega aqui los errores porque sino es dificil saber donde está el error.

Tu estas haciendo un RSS? o para que quieres el XML? (Será de ayuda para ayudarte)

^^ No se olviden de lo mio. Jeje
__________________
¿Tienes problemas para terminar tu proyecto? Nosotros te ayudamos, visitanos en Sidneyrees.com

Última edición por sidney rees; 12/06/2007 a las 21:48
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 17:48.