alguien conoce una funcion "wait" o similar

Ricardo Mun~oz A. rmunoz en pjud.cl
Jue Dic 22 14:37:35 CLST 2005


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.

-- 
Ricardo Mun~oz A.
Usuario Linux #182825 (counter.li.org)



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