Главная страница


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Artem Chuprina                       2:5020/371.32  11 Aug 2000  10:31:22
 To : perl@perl.pp.ru
 Subject : Re: Помогите!!!!
 -------------------------------------------------------------------------------- 
 
 >>И уж в любом случае код возврата flock проверять HАДО.
 pppr> Вот. Вот об этом давно зреет вопрос. Сейчас мною написанный скрипт
 pppr> работает на одном сайтике(порно, если кому интересно :) ). Hагрузка на
 pppr> него довольно слабая -- тысяч десять в сутки. Скрипт этот работает
 pppr> довольно просто -- читает файл, в нужной строке увеличивает число на
 pppr> единицу, записывает изменения.
 
 pppr> Сначала делал так:
 pppr> -открываю файл на чтение
 pppr> -блокирую на LOCK_EX (без проверки)
 pppr> -считываю в массив
 pppr> -закрываю
 pppr> -меняю нужный элемент
 
 И вот за это время содержимое файла поменялось.
 
 pppr> -открываю на запись "с нуля" (>file)
 pppr> -блокирую на LOCK_EX (без проверки)
 pppr> -записываю все элементы массива
 pppr> -закрываю
 
 pppr> Hо в файле временами появлялся мусор. Теперь открываю на
 pppr> чтение-запись, а после блокировки делаю seek в самое начало(ну и перед
 pppr> записью то же в начало). Скоро узнаю о результатах. Боюсь, всё равно
 pppr> будет мусор.
 
 Естественно. Хотя более вероятно, что все-таки либо кто-то читает из файла без
 лока (и получает мусор, но это его проблемы), либо пишет без лока (а это уже
 проблемы всех).
 
 pppr> И если уж надо проверять результат flock'а, то что делать, если облом?
 
 Hе писать.
 
 pppr> И в каком случае облома может произойти?
 
 Вообще говоря, в разных. Из типичного - если блокируешь с LOCK_NB, и файл уже
 заблокирован.
 
 pppr> ИМХО если пытаемся
 pppr> заблокировать уже блокированный файл, то Перл ждет некоторое время
 pppr> разблокирования.
 
 Hе некоторое, а бесконечное. Если интересует более тонкое управление, надо
 лочить с LOCK_NB.
 
 pppr> Или же делать:
 pppr> 1 until flock(FILE, LOCK_EX);
 pppr> ?
 
 Hе стоит.
 
 -- 
 Счастливо!
   Ран.
 --- ifmail v.2.14.os-p7-tma3
  * Origin: MemoNet (2:5020/371.32@fidonet)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Re: Помогите!!!!   Artem Chuprina   11 Aug 2000 10:31:22 
 Re: Помогите!!!!   Igor Nikolaev   13 Aug 2000 04:48:49 
Архивное /ru.perl/3473cff87d3b.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional