|
PHP soporta una manera portable de bloquear archivos enteros de por medio de avisos (lo que quiere decir que todos los programas que acceden al archivo deben usar el mismo mecanismo de bloqueo, o no funcionará).
Nota: flock() es obligatorio bajo Windows.
flock() opera sobre gestor, que debe ser un apuntador a un archivo abierto. operacion es uno de los siguientes valores:
Para adquirir un bloqueo compartido (de lectura), defina operacion a LOCK_SH (o use 1 antes de PHP 4.0.1).
Para adquirir un bloqueo exclusizo (de escritura), defina operacion a LOCK_EX (o use 2 antes de PHP 4.0.1).
Para liberar un bloqueo (compartido o exclusivo), defina operacion a LOCK_UN (o use 3 antes de PHP 4.0.1).
Si no desea que flock() bloquee mientras opera, agregue LOCK_NB (4 antes de PHP 4.0.1) a operacion.
flock() le permite ejecutar un modelo de lectura/escritura simple que puede ser usado en prácticamente cualquier plataforma (incluyendo la mayoría de derivaciones de Unix e incluso Windows). El tercer argumento opcional recibe el valor TRUE si el aviso produciría un bloqueo (la condición EWOULDBLOCK). El bloqueo es liberado también por fclose() (el cual es llamado automáticamente cuando el script finaliza).
Devuelve TRUE si todo se llevó a cabo correctamente, FALSE en caso de fallo.
Nota: Dado que flock() requiere un apuntador de archivo, puede que necesite usar un archivo especial de bloqueo para proteger el acceso a un archivo que pretende truncar abriéndolo en modo de escritura (con un argumento "w" o "w+" a fopen()).
Aviso |
flock() no trabajará sobre NFS y muchos otros sistemas de archivos en red. Revise la documentación de su sistema operativo para más detalles. En algunos sistemas operativos flock() se implementa al nivel de proceso. Cuando usa una API de servidor multi-hilos como ISAPI, ¡es posible que no pueda depender en flock() para proteger archivos contra otros scripts PHP corriendo en hilos paralelos en la misma instancia de servidor! flock() no es soportado en sistemas de archivos anticuados como FAT y sus derivados, y por lo tanto siempre devolverá FALSE bajo tales entornos (esto es especialmente cierto para usuarios de Windows 98). |
Hosting by: hurra.com
Generated: 2007-01-26 18:00:42