Содержание 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);