Руководство по РНР 3.0 - Функции dbm
Содержание
dbmopen
dbmclose
dbmexists
dbmfetch
dbminsert
dbmreplace
dbmdelete
dbmfirstkey
dbmnextkey
dblist
Эти функции позволяют работать с записями dbm-подобных баз данных. Данный тип баз данных (поддерживается
как библиотеками Berkley db, gdbm и некоторыми другими, так и встроенной в PHP3 библиотекой) оперирует с парами
ключ/значение (в противоположность полноценным записям, поддерживаемым реляционными базами данных).
Пример 1. Пример dbm
$dbm = dbmopen("lastseen", "w");
if (dbmexists($dbm, $userid)) {
$last_seen = dbmfetch($dbm, $userid);
} else {
dbminsert($dbm, $userid, time());
}
do_stuff();
dbmreplace($dbm, $userid, time());
dbmclose($dbm);
dbmopen
dbmopen -- открывает базу данных dbm
Описание
int dbmopen(string filename, int flags);
Первый аргумент - это полный путь к открываемому dbm-файлу, а второй - режим
открытия файла, который может быть следующим: "r","n", "w" соответственно только для чтения, создания (включает
чтение-запись и может обрезать уже существующую базу данных с тем же именем) и чтения-записи.
Возвращает идентификатор, который в дальнейшем передается другим dbm-функциям, или false при неуспехе.
Если используется поддержка ndbm, создаются файлы filename.dir и filename.pag. gdbm использует только один
файл, и Berkley db создает файл filename.db. Заметьте, что PHP3 самостоятельно делает свою собственную
блокировку в дополнение к блокировке самой dbm-библиотки. PHP не удаляет .lck-файлы, созданные этой библиотекой,
а рассматривает эти файлы просто как фиксированные i-узлы на которые надо делать блокировку.
Более полную информацию о dbm-файлах можно получить на ftp://prep.ai.mit.edu/pub/gnu и man-страницах.
dbmclose
dbmclose -- закрывает базу данных dbm
Описание
bool dbmclose(int dbm_identifier);
Разблокирует и закрывает указанную базу данных.
dbmexists
dbmexists -- сообщает, существует ли в базе данных значение для ключа
Описание
bool dbmexists(int dbm_identifier, string key);
Возвращает true если существует значение, ассоциируемое с ключом key.
dbmfetch
dbmfetch -- извлекает из базы данных значение ключа
Описание
string dbmfetch(int dbm_identifier, string key);
Возвращает значение ключа key.
dbminsert
dbminsert -- вставляет в базу данных значение ключа
Описание
int dbminsert(int dbm_identifier, string key, string value);
Добавляет в базу данных значение с указанным ключом key.
Возвращает -1 если база данных была открыта в режими только чтение, 0 если добавление произошло успешно
и 1 если указанный ключ уже существует. (Для замены значения следует использовать dbmreplace().)
dbmreplace
dbmreplace -- заменяет значение ключа
Описание
bool dbmreplace(int dbm_identifier, string key, string value);
Замещает значение указанного ключа.
Если ключ не существует, функция добавляет его в базу данных.
dbmdelete
dbmdelete -- удаляет занчение ключа из базы данных
Описание
bool dbmdelete(int dbm_identifier, string key);
Удаляет значение ключа из базы данных.
Возвращает false если ключ в базе данных не существует.
dbmfirstkey
dbmfirstkey -- возвращает первый ключ из базы данных
Описание
string dbmfirstkey(int dbm_identifier);
Возвращает первый ключ базы данных. Заметьте, что упорядочивание не гарантируется, т.к. база данных
может быть построена на основе хэш-таблиц, которые не предусматривают упорядочивание.
dbmnextkey
dbmnextkey -- возвращает следующий ключ базы данных
Описание
string dbmnextkey(int dbm_identifier, string key);
Возвращает ключ, следующий после ключа key. С помощью вызова dbmfirstkey(), а затем dbmnextkey() возможно
пройти по всем парам ключ/значение в базе данных. Например:
Пример 1. Прохождение по всем парам ключ/значение.
$key = dbmfirstkey($dbm_id);
while ($key) {
echo "$key = " . dbmfetch($dbm_id, $key) . "\n";
$key = dbmnextkey($dbm_id, $key);
}
dblist
dblist -- описывает используемые dbm-совместимые библиотеки
Описание
string dblist(void);
Содержание