alguien conoce una funcion "wait" o similar

keber en ql.cl keber en ql.cl
Jue Dic 22 13:29:25 CLST 2005


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.

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...  

bueno, se los dejo a ver si alguien tiene alguna experiencia similar.
Saludos,

Keber Flores B.




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