Forum Webscript.Ru
Программирование => Perl => Тема начата: frenky от 08 Января 2005, 00:40:08
-
ВОбщем создаю 2 DBM файла
get_lock();
dbmopen(%za,"kgames",0666) || die;
get_lock();
dbmopen(%zaz,"kgames1s",0666) || die;
for($i=0;$i<15;$i++)
{
for ($j=$i+1; $j<=15;$j++)
{
$value="$es[$i],$es[$j]";
$za{$value}=$ba;
#$zaz{$value}=$ba;
print "$value
";
$value="$es[$j],$es[$i]";
$za{$value}=$ba;
#$zaz{$value}=$ba;
print "$value
";
print "$i eee $j
";
print "$!";
}
}
dbmclose(%za);
relase_lock();
dbmclose(%zaz);
relase_lock();
и полсе токо как в DBM файле создаеться 188 ключ выдает что File too large как с этим бороться?????
у меня были DBM и с 324 ключами ,по идее колличество ключей в хеше не ограничено но главное чтоб размер ключа и значения біл меньше 1024 символа
-
frenky:
ключа и значения біл меньше 1024 символа
а какой DBM администратор ты используешь?
В BerkeleyDB нет ограничения на размер одной записи (т.е. ключ/значение), по умолчанию где то около 4Гб, ну а на кол-во ключей вроде бы ни у кого ограничений нет, хотя у некоторых есть воз-ть указать предполагаемое кол-во записей, для лучшей оптимизации, но если кол-во оказывается бОльшим, чем указанное ранее кол-во - проблем тоже происходить не должно
-
А как узнать какой DBM администратор я использую?
-
frenky:
А как узнать какой DBM администратор я использую?
лучше работать с DBM с указанием явного dbm администратора.
Наиболее быстрый BerkeleyDB (на всех *nix системах присутствует, http://sleepycat.com )
Минимальный функционал к этой БД можно получить через модуль DB_File
use DB_File;
#связываем
tie (%dbm, \'DB_File\', $file, O_RDWR, 0666, $DB_HASH)||die($!);
#работаем с %dbm
#закрываем
untie %dbm;
http://search.cpan.org/~pmqs/DB_File-1.810/DB_File.pm
Или если все равно какой администратор, то использовать
AnyDBM_File (стандартный перл модуль) - можно там указать какой-нибудь конкретный администратор, либо использовать любой имеющийся.
-
спасибки :О)