Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.07.2011, 20:48   #1
Arassir
Форумчанин
 
Аватар для Arassir
 
Регистрация: 23.10.2008
Сообщений: 230
По умолчанию блокировка файлов при чтении и записи

В результате выполнения следующего кода выводится ошибка:
Цитата:
Warning: file_put_contents() [function.file-put-contents]: Only 0 of 41 bytes written, possibly out of free disk space in C:\document.php on line 171
Код:
// открываю файлы
$file1 = fopen("C:/file1.txt","w+");
$file2 = fopen("C:/file2.txt","w+");

// блокировка
flock($file1, 2);
flock($file2, 2);

// копирую данные из файлов
$arr1=file("C:/file1.txt");
$arr2=file("C:/file2.txt");

// меняю данные 
$arr1[1]=$arr2[1];

// заношу данные в файлы 
file_put_contents("C:/file1.txt",$arr1);
file_put_contents("C:/file2.txt",$arr2);

// снимаю блокировку
flock($file1, 3);
flock($file2, 3);

// закрываю файлы
fclose($file1);
fclose($file2);

Если убрать блокировки все работает как надо. А с блокировками проблема.
Может кто увидит что тут не так?
Arassir вне форума Ответить с цитированием
Старый 06.07.2011, 00:00   #2
Johnatan
Antimoderаtoris
Участник клуба
 
Регистрация: 08.02.2008
Сообщений: 1,251
По умолчанию

Если бы вы хоть одним глазочком глянули в мануал по функции file_put_contents..ну хоть чуточку... вы бы увидели, что первой строчкой в описании этой функции стоит
Цитата:
This function is identical to calling fopen(), fwrite() and fclose() successively to write data to a file.
Вы сразу же бы поняли, что вы пытаетесь повторно открыть для записи уже открытый и заблокированный файл и из-за этого вам выдаётся ошибка.

Но так как вы мануал не смотрите вы этого никогда не узнаете. Как и того, что нужно использовать fwrite() вместо file_put_contents().
98% из тысячи моих постов сделаны в профильном подфоруме. Я не накручиваю свои посты болтанием в "курилке", а ты?
Johnatan вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
выдает ошибку при чтении файлов MetR Общие вопросы Delphi 13 28.11.2010 00:15
Копировать данные при чтении Doctordradd Общие вопросы Delphi 0 02.11.2010 18:43
Блокировка записи в FireBird denisbobrov3 БД в Delphi 1 02.01.2010 01:06
ошибка при чтении файла Alik-Soldier Общие вопросы C/C++ 1 31.05.2009 20:44
Ошибка при чтении БД из файла!! sting БД в Delphi 4 14.12.2008 22:23