|
Автор |
Сообщение |
yok
Участник тусовки
Зарегистрирован: 06.02.2008 Сообщения: 260 Откуда: krasnodar
|
|
|
|
Здравствуйте ДЕНЧАНЕ !
Допустим я открываю файл fopen($file,"r");
потом прочитал файл и сразу закрыл
$content=fread()
нужна ли в таком случае блокировка. Хоть разделяемая, хоть какая, ведь даже не для записи.
Как ведет себя сервер если не указывается ничего.
И второй вопрос, а если я открываю в режиме w+, ведь я уже уничтожаю то что было, опять же нужна ли тут блокировка.
Подумал, подумал, и в первом случае наверно разделяемую блокировку надо поставить.
А во втором, раз я использую режим w+, то если в этот момент кто запросит файл, то ничего не получит, вероятно надо исключительную блокировку ставить.
ТАК???
А если ничего не ставить, то как сервер по умолчанию ведет, что есть то и дает?? |
|
Вернуться к началу |
|
|
den
Старожил
Зарегистрирован: 31.01.2006 Сообщения: 13870 Откуда: Кировоград, Украина
|
|
|
|
Для чтения можешь и не ставить блокировку |
|
Вернуться к началу |
dhsilabs@jabber.ru |
|
|
yok
Участник тусовки
Зарегистрирован: 06.02.2008 Сообщения: 260 Откуда: krasnodar
|
|
|
|
Вот интересное
Еще одним не менее важным моментом является, само открытие файла! Мы не случайно используем режим "a" ("a+"). Если нам будет необходима запись в начало файла с удалением предыдущего содержимого, то следует воздержаться от применения режима "w" ("w+"), поскольку очищение файла предполагает удаление не только содержимого, но и самого файла с последующим созданием аналогичного. Так как этот процесс будет выполнен до исключительной блокировки, то также существует вероятность сбоя в работе. В данном случае стоит применять следующий прием :
<?
$fp = fopen ("path_to_file","a");//открытие
flock ($fp,LOCK_EX);//блокировка файла
ftruncate ($fp,0);//УДАЛЯЕМ СОДЕРЖИМОЕ ФАЙЛА
fputs($fp ,"$data\r\n");//работа с файлом
fflush ($fp);//очищение файлового буфера и записьв файл
flock ($fp,LOCK_UN);//снятие блокировки
fclose ($fp);//закрытие
?>
Здесь мы открыли файл для записи в него, затем применили исключительную блокировку, и только уж потом применили функцию ftruncate ($fp,0) которая выполнила так необходимую нам очистку файла от содержимог |
|
Вернуться к началу |
|
|
yok
Участник тусовки
Зарегистрирован: 06.02.2008 Сообщения: 260 Откуда: krasnodar
|
|
|
|
Оказывается с блокировками это целая тема и огромная.
Тут уже и атомарные операции и еще море чего. И люди аж в 2004 году задавались целью найти идеальное решение. |
|
Вернуться к началу |
|
|
den
Старожил
Зарегистрирован: 31.01.2006 Сообщения: 13870 Откуда: Кировоград, Украина
|
|
|
|
yok, а не проще ли использовать MySQL и забыть про файлы? |
|
Вернуться к началу |
dhsilabs@jabber.ru |
|
|
yok
Участник тусовки
Зарегистрирован: 06.02.2008 Сообщения: 260 Откуда: krasnodar
|
|
|
|
Добрый день ДЕНЧАНЕ !!!
Да конечно den, может и проще, но я как бы учусь, ну и своими руками все хочу попробовать.
Насчет той же проблемы и с мускулом такие же проблемы читал есть, в том же ключе проблема.
Во всяком случае уже знаю что есть такой момент, ЗНАНИЯ ЭТО ОПЫТ.
Спасибо ДЕН за ответы ! |
|
Вернуться к началу |
|
|
|
|
 Главная страница сайта
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|