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

О проекте

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

MySQL

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

Хостинг

Другое








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

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

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

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

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

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

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

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

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

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

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

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



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





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