Foros del Web » Programando para Internet » PHP »

Problema con el Maximum execution time of 30 seconds

Estas en el tema de Problema con el Maximum execution time of 30 seconds en el foro de PHP en Foros del Web. Saludos a todos, tengo una consulta que muestra un promedio de 1000 registros y al parecer sobrepasa los 30 sqgundos del browser y me envia ...
  #1 (permalink)  
Antiguo 30/10/2006, 12:35
Avatar de helthon  
Fecha de Ingreso: junio-2005
Ubicación: Lima
Mensajes: 549
Antigüedad: 18 años, 10 meses
Puntos: 7
Busqueda Problema con el Maximum execution time of 30 seconds

Saludos a todos, tengo una consulta que muestra un promedio de 1000 registros y al parecer sobrepasa los 30 sqgundos del browser y me envia un error de :
Cita:
Fatal error: Maximum execution time of 30 seconds exceeded in exportarempresas.php on line 43
Mi consulta es :
Cita:
$consultaempresa = mysql_query ("SELECT cat_empresa.id_categoria, cat_empresa.id_empresa, empresa.id_empresa, empresa.razonsocial, empresa.direccion, empresa.distrito, empresa.telefono, empresa.fax, empresa.email, empresa.website, empresa.giro
FROM cat_empresa
INNER JOIN empresa ON cat_empresa.id_empresa = empresa.id_empresa
WHERE cat_empresa.id_categoria = '$cat_empresa[id_categoria]' ", $dbh);
Hay alguna forma de poder mejorar esa consulta, mi servidor es muy lento para resolver esta consulta?

Gracias por las posibles respuestas
__________________
HELTHON FUENTES
FLORERIA FLORES PERU Floresperu.com.pe
Garantizamos que cada entrega de flores será de la más alta calidad y frescura
  #2 (permalink)  
Antiguo 30/10/2006, 13:04
Avatar de ZiTAL  
Fecha de Ingreso: marzo-2004
Ubicación: Bermio (Bizkaia)
Mensajes: 1.545
Antigüedad: 20 años, 1 mes
Puntos: 62
servidor local o un hosting de internet?

si es el primero, modifica el php.ini la linea:
Código:
max_execution_time = 30
y pon los segundos que creas necesarios.

Si es la segunda opcion, habla con tu hosting, suerte
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan
  #3 (permalink)  
Antiguo 30/10/2006, 16:16
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Puedes usar la función:

set_time_limit()
www.php.net/set_time_limit

El uso de esta función ajusta el tiempo de ejecución para el script en curso (usala al principio del mismo) .. Muchos proveedores (o mejor dicho en configuración de PHP sobre todo "safe mode" o si lo desactivan a mano ..) limitan el uso de esta función ... (por si no te funciona).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #4 (permalink)  
Antiguo 02/11/2006, 09:20
Avatar de helthon  
Fecha de Ingreso: junio-2005
Ubicación: Lima
Mensajes: 549
Antigüedad: 18 años, 10 meses
Puntos: 7
Saludos a todos.
Yo solicite a mi proveedor de Hosting para que me cambie la funcion y lo realizo
Cita:
---
max_execution_time = 30
a
max_execution_time = 60
---
Ahora me sale el mensaje de error de :
Cita:
Fatal error: Maximum execution time of 60 seconds exceeded in
exportarempresas.php on line 60
__________________
HELTHON FUENTES
FLORERIA FLORES PERU Floresperu.com.pe
Garantizamos que cada entrega de flores será de la más alta calidad y frescura
  #5 (permalink)  
Antiguo 02/11/2006, 09:37
 
Fecha de Ingreso: octubre-2006
Mensajes: 34
Antigüedad: 17 años, 5 meses
Puntos: 0
Es casi imposible que una consulta simple de dos tablas en mysql te tarde 1 minuto por muchos registros que haya, asi que yo iria mirando otra cosa, algun bucle infinito o algo asi..

Suerte.
  #6 (permalink)  
Antiguo 02/11/2006, 10:17
Avatar de helthon  
Fecha de Ingreso: junio-2005
Ubicación: Lima
Mensajes: 549
Antigüedad: 18 años, 10 meses
Puntos: 7
Gracias

Hola _Radamantis_
puede ser lo que dices pero me pongo a revisar el codigo y veo que todos mis while estan cerrados. muestro el codigo haber si se me a pasado algo,
Código PHP:
$consultacategoria mysql_query ("SELECT DISTINCT nombre , id_categoria FROM categoria "$dbh); 
$shtml="<table> ";
$shtml=$shtml."  <tr>";
$shtml=$shtml."    <td>idCategoria</td>";
$shtml=$shtml."    <td>Nombre Categoria </td>";
$shtml=$shtml."  </tr>";
while(
$cat_empresa mysql_fetch_array($consultacategoria)) 
{     
//$idtablacategoria = $cat_empresa['id_categoria'];
$shtml=$shtml."  <tr>";
$shtml=$shtml."    <td>".$cat_empresa['id_categoria']."</td>";
$shtml=$shtml."       <td>".$cat_empresa['nombre']."</td>";
$shtml=$shtml."     </tr>";
$shtml=$shtml."     <tr>";
$shtml=$shtml."       <td>&nbsp;</td>";
$shtml=$shtml."       <td>";

    
$consultaempresa mysql_query ("SELECT cat_empresa.id_categoria, cat_empresa.id_empresa, empresa.id_empresa, empresa.razonsocial, empresa.direccion, empresa.distrito, empresa.telefono, empresa.fax, empresa.email, empresa.website, empresa.giro
    FROM cat_empresa
    INNER JOIN empresa ON cat_empresa.id_empresa = empresa.id_empresa
    WHERE cat_empresa.id_categoria = '$cat_empresa[id_categoria]' "
$dbh);
    while(
$row_empresa mysql_fetch_array($consultaempresa))  
    {
$shtml=$shtml."<table cellpadding=\"1\" cellspacing=\"1\">";
/*
$shtml=$shtml."       <tr>";
$shtml=$shtml."         <td >idcategoria</td>";
$shtml=$shtml."         <td >".$row_empresa['id_categoria']."</td>";
$shtml=$shtml."       </tr>";
$shtml=$shtml."       <tr>";
$shtml=$shtml."         <td>idempresa</td>";
$shtml=$shtml."         <td>".$row_empresa['id_empresa']."</td>";
$shtml=$shtml."       </tr>"; */
$shtml=$shtml."       <tr>";
$shtml=$shtml."         <td>Empresa</td>";
$shtml=$shtml."         <td>".$row_empresa['razonsocial']."</td>";
$shtml=$shtml."       </tr>";
$shtml=$shtml."       <tr>";
$shtml=$shtml."         <td>Direccion</td>";
$shtml=$shtml."         <td>".$row_empresa['direccion']."</td>";
$shtml=$shtml."       </tr>";
$shtml=$shtml."       <tr>";
$shtml=$shtml."         <td>Distrito</td>";
$shtml=$shtml."         <td>".$row_empresa['distrito']."</td>";
$shtml=$shtml."       </tr>";
$shtml=$shtml."       <tr>";
$shtml=$shtml."         <td>Telefono</td>";
$shtml=$shtml."         <td>".$row_empresa['telefono']."</td>";
$shtml=$shtml."       </tr>";
$shtml=$shtml."       <tr>";
$shtml=$shtml."         <td >Fax</td>";
$shtml=$shtml."         <td >".$row_empresa['fax']."</td>";
$shtml=$shtml."       </tr>";
$shtml=$shtml."       <tr>";
$shtml=$shtml."         <td>Email</td>";
$shtml=$shtml."         <td>".$row_empresa['email']."</td>";
$shtml=$shtml."       </tr>";
$shtml=$shtml."       <tr>";
$shtml=$shtml."         <td>Web Site</td>";
$shtml=$shtml."         <td>".$row_empresa['website']."</td>";
$shtml=$shtml."       </tr>";
$shtml=$shtml."       <tr>";
$shtml=$shtml."         <td>Giro</td>";
$shtml=$shtml."         <td>".$row_empresa['giro']."</td>";
$shtml=$shtml."       </tr> ";
$shtml=$shtml."       <tr>";
$shtml=$shtml."         <td  bgcolor=\"#666666\">&nbsp;</td>";
$shtml=$shtml."         <td  bgcolor=\"#666666\">&nbsp;</td>";
$shtml=$shtml."       </tr> ";
$shtml=$shtml."    </table>";
}
$shtml=$shtml." </td>";
$shtml=$shtml."  </tr> ";

$shtml.="</table>";
$scarpetaguardar="excel/"//carpeta donde guardar el archivo. 
$enlace05 $scarpeta."exportarempresascategoria.xls";
$fpec fopen($enlace05,"w");
fwrite($fpec,$shtml); 
fclose($fpec); 
__________________
HELTHON FUENTES
FLORERIA FLORES PERU Floresperu.com.pe
Garantizamos que cada entrega de flores será de la más alta calidad y frescura
  #7 (permalink)  
Antiguo 02/11/2006, 10:38
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 2 meses
Puntos: 10
Hola!
tienes las tablas de tu BD bien indexadas? sino si q es posible q la consulta te tarde mucho!
Aparte mirate lo q te ha dicho Cluster, http://es2.php.net/set_time_limit asi no tendras q avisar a tu proveedor para q te modifique el php.ini!

saludos
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #8 (permalink)  
Antiguo 02/11/2006, 11:21
 
Fecha de Ingreso: octubre-2006
Mensajes: 34
Antigüedad: 17 años, 5 meses
Puntos: 0
Pues igual es todo por el archivo que deseas grabar que es muy grande (gigante si creas semejante tabla para cada registro*1000 registros) prueba a comentar las lineas que graban el archivo.
Ademas para que grabas una tabla HTML en una excel :S.

Quizas deberias buscar otro formato como XML o buscar otra alternativa, para que quieres el fichero exactamente?

Si es por la consulta puedes cambiar el INNER JOIN por LEFT JOIN que suele ir mas rapido pero supongo que sera el archivo que creas..

Saludos.
  #9 (permalink)  
Antiguo 02/11/2006, 11:28
Avatar de helthon  
Fecha de Ingreso: junio-2005
Ubicación: Lima
Mensajes: 549
Antigüedad: 18 años, 10 meses
Puntos: 7
Lo que pasa es que un cliente me pidio toda su info en un excel para que pueda manejarlo para otros temas.

Esta consulta ya lo habia desarrollado como prueba y si me salio, luego lo converti a excel y desde ahi me sale el error
__________________
HELTHON FUENTES
FLORERIA FLORES PERU Floresperu.com.pe
Garantizamos que cada entrega de flores será de la más alta calidad y frescura
  #10 (permalink)  
Antiguo 02/11/2006, 12:08
 
Fecha de Ingreso: octubre-2006
Mensajes: 34
Antigüedad: 17 años, 5 meses
Puntos: 0
Pues yo para crear una excel uso la clase Spreadsheet_Excel_Writer
que puedes encontrar en pear.php.net/package/Spreadsheet_Excel_Writer.

Esta muy bien puedes cambiar el tamaño de los campos, colores, poner formulas, etc.

Tambien creia que el excel aceptaba el simbolo del tabulador (\t) para separar los campos aunque lo acabo de probar con el openoffice y me lo abre con el openWrite y se ve mal :S.
Con el Microsoft Office me suena que se veian bien, prueba a ver.

Separando los campos por el tabulador:
$cadena="CAMPO1\tCAMPO2\t";

Asi no tendras que grabar tanta informacion.
  #11 (permalink)  
Antiguo 08/11/2006, 09:11
Avatar de helthon  
Fecha de Ingreso: junio-2005
Ubicación: Lima
Mensajes: 549
Antigüedad: 18 años, 10 meses
Puntos: 7
Saludos _Radamantis_

Puedes enviarme el zip porque lo bajo y no logro abrirlo de ninguna forma

http://pear.php.net/package/Spreadsh...riter/download
__________________
HELTHON FUENTES
FLORERIA FLORES PERU Floresperu.com.pe
Garantizamos que cada entrega de flores será de la más alta calidad y frescura
  #12 (permalink)  
Antiguo 08/11/2006, 09:30
Avatar de holahola  
Fecha de Ingreso: mayo-2005
Ubicación: Móstoles - (Madrid)
Mensajes: 214
Antigüedad: 18 años, 11 meses
Puntos: 1
Podrías indicar los índices que tiene cada tabla con indicación de si son únicos o no?

¿Has probado a reindexar tus tablas?

Un saludo
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 05:08.