dba_open

(PHP 4, PHP 5, PHP 7)

dba_openОткрывает базу данных

Описание

dba_open ( string $path , string $mode , string $handler = ? , string ...$args ) : resource|false

dba_open() устанавливает экземпляр базы данных по пути path в режиме mode используя обработчик handler.

Список параметров

path

Путь до файлов базы данных.

mode

r для режима чтения, w для режима чтения/записи с уже существующей базой данных. c для режима чтения/записи и создания базы данных, если она еще не была создана, и n для создания, обрезания и доступа для чтения/записи. База данных создается с архитектурой BTree, другие архитектуры (вроде Hash или Queue) не поддерживаются.

Дополнительно, с помощью следующего символа, вы можете задать режим блокировки базы данных. l для блокировки базы данных с помощью файла .lck, или d для самостоятельной блокировки средствами самой базы. Важно, чтобы все ваши приложения делали это согласованно.

Если вы хотите просто проверить доступ и не хотите ждать освобождения блокировки, вы можете добавить третий символ t. Если вы абсолютно уверены, что вам не нужно использовать блокировку базы данных, вы можете использовать символ - вместо l или d. Если ни один из символов: d, l или - не задан, база данных будет использовать режим d.

Замечание:

В один момент времени может быть полько один процесс, пишущий в базу данных. Когда вы используете dba на веб-сервере, и более чем один запрос требует записи в базу данных, они могут это делать только строго по очереди. Также, в момент чтения, запись не доступна. Модуль dba использует блокировки для предотвращения нежелательного поведения. Изучите следующую таблицу:

Блокировки DBA
уже открыта mode = "rl" mode = "rlt" mode = "wl" mode = "wlt" mode = "rd" mode = "rdt" mode = "wd" mode = "wdt"
не открыта ok ok ok ok ok ok ok ok
mode = "rl" ok ok wait false illegal illegal illegal illegal
mode = "wl" wait false wait false illegal illegal illegal illegal
mode = "rd" illegal illegal illegal illegal ok ok wait false
mode = "wd" illegal illegal illegal illegal wait false wait false
  • ok: второй вызов будет успешным.
  • wait: второй вызов будет ждать, пока первый не вызовет dba_close().
  • false: второй вызов вернет false.
  • illegal: вы не можете смешивать модификаторы "l" и "d" в параметре mode.

handler

Имя обработчика, который будет использоваться для доступа по пути path. Ему передаются все необязательные параметры, заданные в dba_open().

args

Необязательная строка (string) параметров, которые передаются драйверу.

Драйверы cdb, cdb_make, flatfile, inifile, qdbm и tcadb не поддерживают дополнительные параметры.

Драйверы db1, db2, db3, db4, dbm, gdbm, и ndbm поддерживают единственный дополнительный параметр $filemode, который имеет то же значение, что и параметр $mode функции chmod() и по умолчанию равен 0644.

Драйвер lmdb принимает два дополнительных параметра. Первый позволяет указать $filemode (смотрите описание выше), а второй — $mapsize, где значение должно быть кратным размеру страницы ОС или ноль, чтобы использовать размер карты по умолчанию. Параметр $mapsize поддерживается начиная с PHP 7.3.14 и 7.4.2, соответственно.

Возвращаемые значения

Возвращает обработчик в случае успешного выполнения, или false в случае возникновения ошибки.

Список изменений

Версия Описание
7.3.14, 7.4.2 Драйвер lmdb теперь поддерживает дополнительный параметр $mapsize.

Смотрите также

  • dba_popen() - Установить постоянный экземпляр базы данных
  • dba_close() - Закрывает базу данных DBA