(PHP 4, PHP 5, PHP 7, PHP 8)
dba_open — Открывает базу данных
$path,$mode,$handler = null,$permission = 0644,$map_size = 0,$flags = null
dba_open() устанавливает экземпляр базы данных по пути
path в режиме mode используя
обработчик handler.
pathmoder для режима чтения, 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.
handlerpath. Ему передаются
все необязательные параметры, заданные в dba_open().
Если параметр handler равен null,
то вызывается обработчик по умолчанию.
permissionpermissions функции chmod(),
значение по умолчанию - 0644.
Драйверы db1, db2, db3,
db4, dbm, gdbm,
ndbm и lmdb поддерживают
параметр permission.
map_sizelmdb допускает параметр map_size.
flagsnull,
будут переданы флаги по умолчанию.
В настоящее время только драйвер LMDB поддерживает следующие флаги:
DBA_LMDB_USE_SUB_DIR и
DBA_LMDB_NO_SUB_DIR.
Функция возвращает экземпляр класса Dba\Connection в случае успешного выполнения или false, если возникла ошибка.
Функция возвращает значение false и выдаёт ошибку уровня E_WARNING,
если параметр handler равен null, но нет обработчика по умолчанию.
| Версия | Описание |
|---|---|
| 8.4.0 | Функция теперь возвращает экземпляр класса Dba\Connection; ранее возвращался ресурс (resource). |
| 8.2.0 |
Добавлен параметр flags.
|
| 8.2.0 |
Параметр handler теперь допускает значение null.
|
| 7.3.14, 7.4.2 |
Драйвер lmdb теперь поддерживает дополнительный
параметр map_size.
|