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


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Yevgeny Manyashev                    2:5020/400     26 Apr 2002  07:42:07
 To : Konstantin Tokar
 Subject : Re: Проблема при блок  ировке  DBM файла
 -------------------------------------------------------------------------------- 
 
 Konstantin Tokar wrote:
 
  > Yevgeny Manyashev wrote:
  >
  >>Программа в цикле пишет статистику в кучу DBM файлов -
  >>один файл при каждом проходе.
  >>Проблемы появились при блокировке этих файлов.
  >>
 
 Решил проблему, использовав
 
 use DB_File::Lock;
 tie %data, 'DB_File::Lock', "$data_file", O_CREAT|O_RDWR, 0666,
 $DB_HASH, 'write' or die $!;
 
  > ...
  > Я переписал твой скрипт, в виндовсе он работает. Hо это неважно, как и
  > твоя ошибка, так как в том же мане написано, почему твой метод
  > блокировки использовать не следует, и какой следует.
  >
  > #!perl -w
  > use strict;
  > use DB_File;
  >
  > BEGIN {
  >    require Fcntl;
  >    if (exists $Fcntl::EXPORT_TAGS{'flock'}) {
  >     Fcntl->import(':flock');
  >    } else {
  >     eval q{
  >        sub LOCK_SH ()  {1}
  >        sub LOCK_EX ()  {2}
  >     };
  >    }
  > }
  >
  >
  > while(my $data_file=<>){
  > chomp $data_file;
  >
  > my %data;
  > my $db = tie %data, 'DB_File', "$data_file", O_CREAT|O_RDWR, 0666
  >     or die "Don't tie to data file $data_file.\n";
  >
  > #Блокирую его
  > my $fd = $db->fd;
  > open( DB_FH, "+<&=$fd" ) or die "dup $!";
  > flock( DB_FH, LOCK_EX ) or die "flock: $!";
  >
  > #Пишу данные
  > $data{'$foo'} = '$bar';
  >
  > #Затем снимаю блокировку и закрываю файл
  > flock(DB_FH, LOCK_UN);
  > undef $db;
  > untie %data;
  > close(DB_FH);
  > }
 
 -- 
 
 Best regards.
 
 --- ifmail v.2.15dev5
  * Origin: Sibnet (2:5020/400)
 
 

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

 Тема:    Автор:    Дата:  
 Проблема при блоки ровке DBM файла   Yevgeny Manyashev   25 Apr 2002 13:55:45 
 Re: Проблема при блокировке DBM файла   Konstantin Tokar   25 Apr 2002 14:39:04 
 Re: Проблема при блок ировке DBM файла   Yevgeny Manyashev   26 Apr 2002 05:31:01 
 Re: Проблема при блок ировке DBM файла   Yevgeny Manyashev   26 Apr 2002 07:42:07 
Архивное /ru.perl/36250873e90d.html, оценка 3 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional