{% else-1 %}
Блокировка файлов от записи на PHP.
При частых обращениях к файлам (для чтения или записи) может возникнуть такая ситуация, когда один процесс осуществляет запись в файл, а второй в это же время считывает данные из файла. Еще хуже, если данные считываются из файла, обрабатываются и обратно записываются. Таким образом, если не ставить блокировку на файлы на время их обработки, может возникнуть ситуация, при которой данные будут одновременно обрабатываться несколькими и процессами и могут быть искажены или потеряны.

Для блокировки и разблокировки файлов мы рекомендуем Вам использовать стандартную функцию PHP flock() с флагами LOCK_EX и LOCK_UN. Флаг LOCK_EX используется для эксклюзивной блокировки файла (т.е. доступ к файлу будет доступен только процессу, поставившему блокировку), а LOCK_UN - для снятия блокировки с файла.

                        
<?php
$fh=fopen("file.txt", "a+"); //открываем для чтения/записи
flock($fh, LOCK_EX); //блокируем файл
fseek($fh, 0); //ставим указатель на начало файла
while (!feof($fh)) $line. = fread($fh,2048); //считываем из файла

//здесь производим обработку считанных данных

ftruncate($fh, 0); //очищаем файл
fwrite($fh, $Res_$line); //записываем в файл
flock($fh, LOCK_UN); //снимаем блокировку
fclose($fh); //закрываем файл
?>
1 46 0
Без комментариев...