flock

(PHP 3 >= 3.0.7, PHP 4, PHP 5)

flock -- Aviso de bloqueo de archivos portable

Descripción

bool flock ( resource gestor, int operacion [, int &bloquearia] )

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:

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.

Ejemplo 1. Ejemplo de flock()

<?php

$aa
= fopen("/tmp/bloqueo.txt", "w+");

if (
flock($aa, LOCK_EX)) { // realizar un bloqueo exclusivo
    
fwrite($aa, "Escribir algo aqui\n");
    
flock($aa, LOCK_UN); // liberar el aviso
} else {
    echo
"&iexcl;No se pudo bloquear el archivo!";
}

fclose($aa);

?>

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:58