П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
Поиск по сайту:
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

Безопасность

Хостинг

Другое








Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 177633 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 74996 раз(а).

Учебник HTML.
Просмотров 73726 раз(а).

Руководство по PHP5.
Просмотров 44622 раз(а).

Хостинг через призму DNS.
Просмотров 51438 раз(а).

Подборка текстов стандартных документов.
Просмотров 44757 раз(а).

Учебник PHP - Самоучитель
Просмотров 51006 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 51444 раз(а).

Внешние атаки...
Просмотров 41657 раз(а).

Учебник PHP.
Просмотров 36943 раз(а).

SSI в примерах.
Просмотров 27659 раз(а).



 
 
| Добавить в избранное | Сделать стартовой | Помощь





Глава 17: Работа с пользовательскими базами данных.
17.3 Использование DBM-хеша

После открытия базы данных обращения к DBM-хешу преобразуются в обращения к базе данных. Изменение значения в хеше или ввод в него нового значения вызывает немедленную запись соответствующих элементов в файлы на диске. Например, после открытия массива %fred из предыдущего примера мы можем обращаться к элементам базы данных, вводить в нее новые элементы и удалять существующие:

$FRED{"fred"} = "bedrock"; # создать (или обновить) элемент

delete $FRED{"barney"}; # удалить элемент базы данных

foreach $key (keys %FRED) { # пройти по всем значениям 
  print "$key has value of $FRED{$key)\n";
}

Последний цикл должен просмотреть весь файл на диске дважды: один раз для выборки ключей, а второй — для поиска значений, соответствующих этим ключам. Если вы просматриваете DBM-хеш, то более эффективным способом с точки зрения эксплуатации диска является использование операции each, которая делает всего один проход:

while (($key, $value) = each(%FRED) ) {
  print "$key has value of $value\n";
}

Если вы обращаетесь к системним DBM-базам данных, например к базам данных, созданным системами sendmail и NIS, вы должны иметь в виду, что в плохо написанных С-программах в конце строк иногда стоит символ NUL (\0). Программам библиотеки DBM этот NUL не нужен (они обрабатывают двоичные данные с помощью счетчика байтов, а не строки с символом NUL на конце), поэтому он хранится как часть данных. В таком случае вы должны добавлять символ NUL в конец своих ключей и отбрасывать NUL, стоящий в конце возвращаемых значений, иначе данные не будут иметь смысла.

Например, чтобы найти имя merlyn в базе данных псевдонимов, можно сделать так:

dbmopen(%ALI, "/etc/aliases", undef) || die "no aliases?";
$value = $ALI {"merlyn\0" 1; # обратите внимание на добавленный NUL
chop($value) ; # удалить добавленный NUL
print "Randal's mail is headed for: $value\n"; # показать результат

В вашей версии UNIX база данных псевдонимов может храниться не в каталоге /etc, а в каталоге /usr/lib. Чтобы вияснить, где именно она хранится, придется провести маленькое расследование. Новые версии sendmail этим NUL-дефектом не страдают. ''

Назад | Вперед
Содержание (общее) | Содержание раздела



Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
 





Copyright © 2005-2016 Project.Net.Ru