alguien conoce una funcion "wait" o similar
keber en ql.cl
keber en ql.cl
Vie Dic 23 00:19:39 CLST 2005
"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.
> > Sin embargo, cuando son muchos los registros (genera un pdf por cada
> > registro/envia un correo con ese pdf) el archivo se corrompe.
> >
> > Es decir, al intentar ver el archivo el visor indica que está dañado.
Esto no
> > pasa para un solo registro, o dos. Se produce de forma aleatoria cada
cierta
> > cantidad de envios. Por ejemplo, de 25 registros, los primeros 3 se
envían
> > bien, los sgtes 2 llegan con el pdf corrupto, los sgtes. 3 se envían
bien, y
> > así (la cantidad de correctos/erroneos varía pero está entre 2 y 4).
> >
> > Lo que estoy haciendo es generar el pdf, lo escribo en un archivo y luego
lo
> > attacho al mail (clase phpmailer).
> > Pienso que puede ser provocado por un retardo en la escritura del
archivo,
> > demodo tal que en la siguiente iteración (registro k+1) el archivo no
está
> > disponible para ser sobreescrito.
> >
> > En base a eso, he pensado en dos alternativas: dejar un wait() para darle
> > algo de tiempo para que escriba el archivo, o hacer un thread_yield()
para
> > que en ese punto ceda la cpu a otro proceso, pero creo q' eso no está
> > implementado en php.
>
> puedes usar la funcion sleep() de PHP -> http://cl.php.net/sleep
>
> > Alguna idea? voy a probar por ahora con un loop de algunos miles de
> > iteraciones, pero no lo puedo admitir como solución, puesto que el script
se
> > ejecuta cada 5 min (cron).
> >
> > Por último, lo ideal sería verificar que el archivo está disponible o
algo
> > así (si es que el problema es ese). Lo otro sería generar un nombre
aleatorio
> > para cada archivo y luego borrarlos todos...
>
> 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.
--
Más información sobre la lista de distribución PHP