dba_open
(PHP 4, PHP 5, PHP 7)
dba_open — Открывает базу данных
Описание
$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