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

О проекте

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

MySQL

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

Хостинг

Другое








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

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

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

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

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

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

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

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

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

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

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

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



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





Глава 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