Блокировка файлов, как лучше делать запись ?

seosniks
На сайте с 13.08.2007
Offline
389
421

Задача такая, в файл db.php пишем данные в режиме

$fout = fopen("db.php",'a+');

$vline="Здесь контент";

fwrite($fout, trim($vline));

fclose($fout);

Как избежать затирания файла при одновлеменном доступе к чтению записи?

Годится ли такой вариант?

$fout = fopen("db.php",'a+');

$vline="Здесь контент";

flock($fout,2);

fwrite($fout, trim($vline));

flock($fout,3);

fclose($fout);

Подскажите верное решение пожалуйста?

Задача писать в гостевую книгу данные.

SP
На сайте с 20.05.2008
Offline
56
#1

да, такое будет работать, только наверное лучше использовать константы (если версия PHP не слишком старая) и проверять возможность захвата файлов:

$fout = fopen("db.php",'a+');

$vline = "Здесь контент";
if ( flock($fout, LOCK_EX) ) {
fwrite($fout, trim($vline));
flock($fout, LOCK_UN);
} else {
//тут если не можем захватить файл для записи
}
fclose($fout);

еще можно к LOCK_EX добавить константу LOCK_NB, чтобы файл при записи не блокировался "намертво", но она на windows-хостинге работать не будет

Делаю небольшие заказы на php, perl, js/ajax, delphi; парсеры, простые сайты с админкой, установка\настройка sape, wordpress и др. Мой Блог (http://www.seoproger.ru)
ewg777
На сайте с 04.06.2007
Offline
225
#2
Подскажите верное решение пожалуйста?

/ru/forum/comment/5739101

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий