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