Есть вопрос?
Зайди на форум

Поиск на сайте: Advanced

Denix - новый дистрибутив Linux. Русификация Ubuntu и установка кодеков

dkws.org.ua
Форум сайта dkws.org.ua
 
Главная    ТемыТемы    АльбомАльбом    РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

flock, вопрос по блокировке файла.

 
Начать новую тему Ответить на тему    Список форумов dkws.org.ua -> PHP
 
Автор Сообщение
yok

Участник тусовки


Зарегистрирован: 06.02.2008
Сообщения: 260
Откуда: krasnodar

СообщениеДобавлено: Пн Апр 26, 2010 11:41 am    Заголовок сообщения: flock, вопрос по блокировке файла.
Ответить с цитатой

Здравствуйте ДЕНЧАНЕ !

Допустим я открываю файл fopen($file,"r");
потом прочитал файл и сразу закрыл
$content=fread()
нужна ли в таком случае блокировка. Хоть разделяемая, хоть какая, ведь даже не для записи.
Как ведет себя сервер если не указывается ничего.

И второй вопрос, а если я открываю в режиме w+, ведь я уже уничтожаю то что было, опять же нужна ли тут блокировка.

Подумал, подумал, и в первом случае наверно разделяемую блокировку надо поставить.

А во втором, раз я использую режим w+, то если в этот момент кто запросит файл, то ничего не получит, вероятно надо исключительную блокировку ставить.
ТАК???

А если ничего не ставить, то как сервер по умолчанию ведет, что есть то и дает??
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
den

Старожил


Зарегистрирован: 31.01.2006
Сообщения: 13870
Откуда: Кировоград, Украина

СообщениеДобавлено: Пн Апр 26, 2010 12:30 pm    Заголовок сообщения:
Ответить с цитатой

Для чтения можешь и не ставить блокировку
Вернуться к началу
Посмотреть профиль Отправить личное сообщение dhsilabs@jabber.ru
yok

Участник тусовки


Зарегистрирован: 06.02.2008
Сообщения: 260
Откуда: krasnodar

СообщениеДобавлено: Пн Апр 26, 2010 12:53 pm    Заголовок сообщения:
Ответить с цитатой

Вот интересное

Еще одним не менее важным моментом является, само открытие файла! Мы не случайно используем режим "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

СообщениеДобавлено: Пн Апр 26, 2010 2:05 pm    Заголовок сообщения:
Ответить с цитатой

Оказывается с блокировками это целая тема и огромная.
Тут уже и атомарные операции и еще море чего. И люди аж в 2004 году задавались целью найти идеальное решение.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
den

Старожил


Зарегистрирован: 31.01.2006
Сообщения: 13870
Откуда: Кировоград, Украина

СообщениеДобавлено: Пн Апр 26, 2010 2:06 pm    Заголовок сообщения:
Ответить с цитатой

yok, а не проще ли использовать MySQL и забыть про файлы?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение dhsilabs@jabber.ru
yok

Участник тусовки


Зарегистрирован: 06.02.2008
Сообщения: 260
Откуда: krasnodar

СообщениеДобавлено: Вт Апр 27, 2010 8:49 am    Заголовок сообщения:
Ответить с цитатой

Добрый день ДЕНЧАНЕ !!!

Да конечно den, может и проще, но я как бы учусь, ну и своими руками все хочу попробовать.
Насчет той же проблемы и с мускулом такие же проблемы читал есть, в том же ключе проблема.

Во всяком случае уже знаю что есть такой момент, ЗНАНИЯ ЭТО ОПЫТ.

Спасибо ДЕН за ответы ! Question
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему Ответить на тему    Список форумов dkws.org.ua -> PHP Часовой пояс: GMT
Страница 1 из 1
 Главная страница сайта
 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
© Колисниченко Денис