Tenemos un servidor FreeBSD con samba en el que los empleados copian archivos de imagen, que luego se cargan en nuestros servidores web (de esta manera no tienen que meterse con ftp). A veces, si el script de carga se ejecuta al mismo tiempo que se copian los archivos, puede cargar un archivo incompleto.¿Hay una mejor manera de ver si se está escribiendo un archivo?
Solucionamos esto obteniendo la lista de archivos junto con los tamaños de archivo, luego esperando 5 segundos y volviendo a verificar los tamaños de archivo. Si los tamaños coinciden, se guarda para cargar, si no coinciden, se comprueba nuevamente en otros 5 segundos.
Esto parece una forma extraña de comprobar si se están escribiendo los archivos. ¿Hay una manera mejor y más simple de hacer esto?
'if (! Flock ($ fp, LOCK_EX | LOCK_NB)) {// el archivo está bloqueado para la escritura'? – DaveRandom
'bandada()' ¿tal vez? –
no estoy seguro de si 'flock()' y las cerraduras de samab se verán entre sí de manera confiable. Tuvo algunos problemas hace años. –