Foros del Web » Programando para Internet » PHP »

Problemas con maximum execution time

Estas en el tema de Problemas con maximum execution time en el foro de PHP en Foros del Web. Estoy realizando un código que consulta a la base para hacer un update y luego toma los datos para informar por email los cambios, pero ...
  #1 (permalink)  
Antiguo 01/11/2007, 10:37
 
Fecha de Ingreso: agosto-2003
Mensajes: 203
Antigüedad: 20 años, 8 meses
Puntos: 0
Problemas con maximum execution time

Estoy realizando un código que consulta a la base para hacer un update y luego toma los datos para informar por email los cambios, pero de vez en cuando me tira el error "Fatal error: Maximum execution time of 30 seconds". Las consultas que realizo se ejecutan rápidamente, no se porque me puede estar tirando este error.
Quien me pueda ayudar lo agradezco. Dejo el código php, el error me lo tira en una linea del biblio.php donde cierra la función "EnviarMail", dejo también esta función.


Código PHP:
<?php
include ('../misc/biblio.php');

$Fecha date ("d/m/Y");
$Hora date ("H:i:s");
$DB        "MiscIntra";
$DBOSDE "OSDE";
if (
$accion=="R") {
    
$sql "UPDATE ANSES_Consultas SET idTipoRespuesta = ".$_POST['idTipoResponder'].", txtRespuesta = '".str_replace ("'""\""$_POST['txtR'])."', fechaRespuesta = '".ConvDateARGtoServer($Fecha)." ".$Hora."', estado=4 WHERE nroid = ".$_POST['idConsulta'];
}



if(
Ejecutar($sql$DBCONNSQL)){
    
$sqlASP "sp_GetConsultaANSES @idConsulta=".$_POST['idConsulta'];
    if(
$datosASP TrDatConn($sqlASP$DBCONNSQL)){

        
$subjet "Consulta ANSES";
        
$texto    $datosASP[0]["nya"] . " ( " $datosASP[0]["cuildni"] . " ) \r\n";
        
$textoC    $datosASP[0]["nya"] . "\r\n";
        
$texto    .= "Respuesta: " $datosASP[0]["titulo"] . "\r\n";
        
$textoC    .= "Respuesta: " $datosASP[0]["titulo"] . "\r\n";
        if (
$datosASP[0]["txtRespuesta"]!="") {
            
$texto .= $datosASP[0]["txtRespuesta"];
            
$textoC.= $datosASP[0]["txtRespuesta"];
        }
        
$texto nl2br ($texto);
        
$textoC nl2br ($textoC);
        
        
$nya    $datosASP[0]["nya"];
        
$idS    $datosASP[0]["idSolicitante"];        
        
$nyaS    $datosASP[0]["nyaSolicitante"];
        
$emailS $datosASP[0]["emailS"];
        
$idP    $datosASP[0]["idPromotor"];    
        
EnviarMail($nyaS$emailS$subjet$texto"[email protected]");

        
$sqlP "usuarioConDatosComp @nroid=" $idP;
        if(
$datosP TrDatConn($sqlP$DBOSDECONNSQL)){
            
$gerenciaHabilitadaCelular false;

            
$nyaP            $datosP[0]["nombres"]. " " $datosP[0]["apellidos"];
            
$emailP            $datosP[0]["email"];
            
$CodigoAreaCel    $datosP[0]["CodigoAreaCel"];
            
$PrefijoCel        $datosP[0]["PrefijoCel"];
            
$CodCel            $datosP[0]["CodCel"];
            
$NumeroCel        $datosP[0]["NumeroCel"];
            
            
EnviarMail($nyaP$emailP$subjet$texto"[email protected]");

            
$SQL_GHC "exec usuarioGerenciaHabilitadaCelular @idUsuario = " $idP;
            if (
TrDatConn($SQL_GHC$DBOSDECONNSQL)) {
                
$gerenciaHabilitadaCelular true;
            }
            if (
$gerenciaHabilitadaCelular and $NumeroCel!="") {
                
$emailCP $CodigoAreaCel.$CodCel.$NumeroCel."@emocion.net.ar";
                
EnviarMail($nyaP$emailCP$subjet$textoC"[email protected]");
            }
            
        }
    }

    
    
    
header('location:listado.php?');
    exit();
}
?>
biblio.php
Código PHP:
function EnviarMail($nya$email$subjet$texto$de ""$type "html"){
    
// múltiples recipientes
    
$para  $email;
    
    
// asunto
    
$asunto $subjet;
    
    
// mensaje
    
$mensaje $texto;
    
    
// Para enviar correo HTML, la cabecera Content-type debe definirse
    
$cabeceras  'MIME-Version: 1.0' "\r\n";
    if (
$type == "html") {
        
$cabeceras .= 'Content-type: text/html; charset=iso-8859-1' "\r\n";        
    }else {
        
$cabeceras .= 'Content-type: text/plain; charset=iso-8859-1' "\r\n";
    }

    

    
// Cabeceras adicionales
    
$cabeceras .= 'To: '.$nya.' <'.$email.'>' "\r\n";
    if (
$de == "") {
        
$cabeceras .= 'From: OSDE INTRANET <[email protected]>' "\r\n";    
    }else {
        
$cabeceras .= 'From:  <'.$de.'>' "\r\n";    
    }
    


    
    
// Enviarlo
    
mail($para$asunto$mensaje$cabeceras);

  #2 (permalink)  
Antiguo 01/11/2007, 19:47
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Re: Problemas con maximum execution time

Primero anda comentando codigo de manera sectorizada, por ejemplo de a 50 lineas. Y vas testeando si funciona o no y cuando se queda en ese loop es porque identificaste donde esta el problema.

Una vez el porque se queda pegado, anda imprimiendo las variables de ese sector del codigo para asi ver cual es la que no esta funcionando.

Si es por la funcion mail podrias verificar si tu servidor de correos esta tomando la informacion que le envias, sino puede ser que la funcion mail trate y trate por 30+ segs y el servidor de correo no lo pesque.

Tambien voy a recomendarte que la funcion EnviarMail te devuelva la funcion mail para asi poder gestionar alguna accion si el mail no fuese enviado:
Código PHP:
return mail($para$asunto$mensaje$cabeceras); 
Asi sabras si el mail fue enviado o no ;)

Bueno... por ahora creo que en eso te puedo aportar.

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #3 (permalink)  
Antiguo 02/11/2007, 07:15
 
Fecha de Ingreso: agosto-2003
Mensajes: 203
Antigüedad: 20 años, 8 meses
Puntos: 0
Re: Problemas con maximum execution time

Gracias por la respuesta. Tome tu consejo, el problema es que no pasa siempre, sino que cada tanto aparece el error.
  #4 (permalink)  
Antiguo 05/11/2007, 02:07
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Re: Problemas con maximum execution time

Eso puede ser por la cantidad de mails.... a veces los servidores de correo (si no siempre) de 100 mails se quedan con un 2 o 3% en el bolsillo, por diferentes razones...

Sin ir mas lejos yo tenia que enviar 37k (37.000) correos para una publicacion de noticias diarias... y de esos llegaban unos 33k~36k usando un servidor pagado.

Bueno... Suerte! :D
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
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 02:55.