
BLOQUEAR ARCHIVOS EN PHP
Un problema bastante importante cuando se trabaja con ficheros es cuando varios procesos intentan escribir en un mismo archivo al mismo tiempo. La función fopen no evita que otro script abra el mismo archivo y escriba en el mismo archivo y producirse efectos no deseados. La solución a este problema es utilizar el bloqueo de archivos. Para bloquear archivos en php se hace mediante la función flock.
Cuando bloquea un archivo, se puede marcar como un bloqueo de solo lectura, compartiendo así el acceso al archivo con otros procesos, o un bloqueo exclusivo, lo que le permite realizar cambios en el archivo.
La función flock necesita identificador de archivo como primer parámetro y el tipo de bloqueo como segundo parámetro.
Las opciones de bloqueo son:
- LOCK_SH Bloqueo compartido (lectura).
- LOCK_EX: Bloqueo exclusivo (escritura).
- LOCK_UN: Desbloquear el fichero (compartido o exclusivo).
$fp = fopen('lock.txt', 'a+');
flock($fp, LOCK_EX);
$fp3 = fopen('lock.txt', 'r+');
fwrite($fp3,'texto a escribir en fichero');
$fp = fopen('lock.txt', 'a+');
flock($fp, LOCK_EX);
$fp3 = fopen('lock.txt', 'r+');
flock($fp, LOCK_EX);
fwrite($fp3,'texto a escribir en fichero');