Автор Тема: Блокировка  (Прочитано 4381 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн frenky

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 171
  • +0/-0
  • 0
    • Просмотр профиля
    • http://fdm.kiev.ua
Блокировка
« : 11 Января 2005, 19:08:58 »
Вот функция блокировки
sub get_lock {
open(SEM,  ">s.sem") ;
flock(SEM,LOCK_EX) || "Cant block the file:$!";
}
sub relase_lock {close(SEM); }


get_lock();
dbmopen(%za,"kgames",0666) || die;

get_lock();
dbmopen(%zaz,"kgames1s",0666) || die;
dbmclose(%za);
relase_lock();

dbmclose(%zaz);
relase_lock();

Тут заблокируються обе базы или одна и таже два раза?
____________________
[on-line football manager] fdm.kiev.ua

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Блокировка
« Ответ #1 : 11 Января 2005, 19:19:19 »
ты совершенно неправильно делаешь
perldoc -q lock
The documentations is your friend

Оффлайн frenky

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 171
  • +0/-0
  • 0
    • Просмотр профиля
    • http://fdm.kiev.ua
Блокировка
« Ответ #2 : 11 Января 2005, 21:51:22 »
что то я так и не нашел там примера бля блокировок dbm файлов
____________________
[on-line football manager] fdm.kiev.ua

Оффлайн Green Kakadu

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2757
  • +1/-0
  • 0
    • Просмотр профиля
    • http://gnezdo.webscript.ru
Блокировка
« Ответ #3 : 12 Января 2005, 10:46:50 »
Цитировать
frenky:
Тут заблокируються обе базы или одна и таже два раза?

ты при втором вызове get_lock(); не получишь блокировки, т.к. она уже включена, поэтому передавай какой-нибудь идент-р ф-ции блокировки, типа get_lock(\'kgames1s\');
sub get_lock {
my $name=shift||\'default\';
open($name, ">$name.sem") ;
flock($name,LOCK_EX) || "Cant block the file $name:$!";
}
sub relase_lock {
$name=shift||\'default\';
close($name);
 }


Цитировать
frenky:
что то я так и не нашел там примера бля блокировок dbm файлов

да, с этим есть проблемы. Помнится есть модули для блокировки, почитай раздел Safe ways to lock a database вот тут:
http://search.cpan.org/~pmqs/DB_File-1.810/DB_File.pm
« Последнее редактирование: 12 Января 2005, 15:37:01 от Green Kakadu »
 в исканиях.

Оффлайн frenky

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 171
  • +0/-0
  • 0
    • Просмотр профиля
    • http://fdm.kiev.ua
Блокировка
« Ответ #4 : 12 Января 2005, 12:48:48 »
Вот еще какая проблема на хостинге не установлен модуль DB_File.pm
____________________
[on-line football manager] fdm.kiev.ua

Оффлайн Green Kakadu

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2757
  • +1/-0
  • 0
    • Просмотр профиля
    • http://gnezdo.webscript.ru
Блокировка
« Ответ #5 : 12 Января 2005, 13:36:05 »
Цитировать
frenky:
на хостинге не установлен модуль DB_File.pm

ну тогда юзай Any_DBM, хотя если собираешься делать что-то серьезное на DBM, то лучше бы обзавестись и если все совсем серьезно, работать не через DB_File, а через BerkeleyDB, т.к.  DB_File представляет лишь минимальную часть функция для работы с базами Berkeley (т.е. ни транзакций, ни блокировок)
 в исканиях.

Оффлайн frenky

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 171
  • +0/-0
  • 0
    • Просмотр профиля
    • http://fdm.kiev.ua
Блокировка
« Ответ #6 : 12 Января 2005, 15:22:16 »
ну а почему блокировка представленная віше не проконает?
____________________
[on-line football manager] fdm.kiev.ua

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Блокировка
« Ответ #7 : 12 Января 2005, 15:32:42 »
Потому что ты не понимаешь что ты написал.
Прокомментируй каждую строчку.
The documentations is your friend

Оффлайн Green Kakadu

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2757
  • +1/-0
  • 0
    • Просмотр профиля
    • http://gnezdo.webscript.ru
Блокировка
« Ответ #8 : 12 Января 2005, 15:33:30 »
Цитировать
frenky:
ну а почему блокировка представленная віше не проконает?

сгодится, только нужно при блокировке к каждой БД добавить идентификатор. А то ты используешь один файл для блокировки всех БД, т.е. для каждой БД нужно использовать свой блокировочный файл
Цитировать
Green Kakadu:
get_lock(\'kgames1s\');

sub get_lock {
my $name=shift||\'default\';
open($name, ">$name.sem") ;
flock($name,LOCK_EX) || "Cant block the file:$!";
}

sub relase_lock {
$name=shift||\'default\';
close($name);
}
 в исканиях.

Оффлайн frenky

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 171
  • +0/-0
  • 0
    • Просмотр профиля
    • http://fdm.kiev.ua
Блокировка
« Ответ #9 : 12 Января 2005, 15:39:37 »
understood  
thanks
____________________
[on-line football manager] fdm.kiev.ua

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28