alguien conoce una funcion "wait" o similar

keber en ql.cl keber en ql.cl
Vie Dic 23 13:26:08 CLST 2005


keber en ql.cl dijo:

> "Ricardo Mun~oz A." <rmunoz en pjud.cl> dijo:
> 
> > El jue, 22-12-2005 a las 13:29, keber en ql.cl escribió:
> > > Hola listeros,
> > > tengo el siguiente problema:
> > > 
> > > Tengo un script php que revisa una base de datos, genera un archivo pdf 
y 
> lo 
> > > envía por correo. En teoría funciona bien.
(...)

> > me tinca que los PDF podrian quedar corruptos al ser atachados en el
> > mail... pero sin ver tu codigo seria dificil saberlo.
> 
> Si y no... no, por que de 26 correos q' envié con el script, 12 traían el 
pdf 
> malo... por ejemplo, el 5º,6º y 7º traian el pdf ajunto corrupto, el 13 y 
14 
> idem, etc; el resto venían bien.
> voy a probar con sleep(), thanks.
> -- 
SOLUCION: en lugar de generar un archivo con el mismo nombre, genero un 
archivo con nombre especifico segun cada registro (ej: "Outstream".$info
['folio'].".pdf")
Con eso me evito la función sleep (que con un valor de 4 segundos me 
funcionaba,es decir, los pdf no llegaban corruptos... pero se demoraba 
demasiado. para 170 entradas, el tiempo de proceso + los 4 segundos... no, 
mucho).

El codigo es el sgte:
crearpdf.php toma la clase fpdf que está en sourceforge, le agregué la 
función generar, que genera el pdf y lo escribe en disco. le paso el registro 
como parámetro para tomar los campos.
enviamail.php toma la clase phpmailer, también creé una función (creamail) 
para enviar un correo con el archivo adjunto y retornar un codigo de error si 
falló.

espero les sirva, saludos!

<?php
//require("includes/class.phpmailer.php");
require("crearpdf.php");
require("enviamail.php");

 $dab=mysql_connect($database,$user,$pass);
 mysql_select_db($db,$dab);
 $query="select * from datos where datos.enviado != 1 order by folio asc;";
 $res=mysql_query($query,$dab);

for(;$res && $info=mysql_fetch_array($res);)
{
    generar($info);
    //sleep(2); //Un pequenno respiro para que el disco haga su trabajo

    if(!creamail($info['folio'])) //si error al enviar el correo, termina
    {
      exit;
    }
    $res2=mysql_query("update datos set datos.enviado = 1 where folio=".$info
['folio'],$dab);
    unlink("Outstream".$info['folio'].".pdf");
    echo "Mensaje folio ".$info['folio']." Enviado\n";
}
mysql_close($dab);

-- 





Más información sobre la lista de distribución PHP