dba_open
(PHP 4, PHP 5, PHP 7, PHP 8)
dba_open — Відкриває базу даних
Опис
dba_open( string $path, string $mode, ?string $handler = null, int $permission = 0644, int $map_size = 0, ?int $flags = null): 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(). Якщо параметр handler
равен**null
**то викликається обробник за замовчуванням.
permission
Необов'язковий параметр, заданий цілим числом (int), який надсилається драйверу. У нього те саме значення, що й у параметра permissions
функції chmod(), значение по умолчанию -0644
Драйвери db1
db2
db3
db4
dbm
gdbm
ndbm
иlmdb
поддерживают параметрpermission
map_size
Необов'язковий параметр, заданий цілим числом (int), який надсилається драйверу. Його значення має бути кратно розміру сторінки ОС або нулю, щоб використовувати розмір карти за замовчуванням.
Лише драйвер lmdb
допускает параметрmap_size
flags
Прапори передачі драйверам бази даних. Якщо вказано значення null
, будуть надіслані прапори за замовчуванням. В даний час лише драйвер LMDB підтримує такі прапори: DBA_LMDB_USE_SUB_DIR
і DBA_LMDB_NO_SUB_DIR
Значення, що повертаються
Повертає обробник у разі успішного виконання або **false
**в случае возникновения ошибки.
Помилки
Функція повертає значення false
та видає помилку рівня E_WARNING
, якщо параметр handler
равен**null
**але немає оброблювача за замовчуванням.
список змін
Версия | Опис |
---|---|
8.2.0 | Добавлен параметрflags |
8.2.0 | Параметрhandler тепер припускає значення null |
7.3.14, 7.4.2 | Драйвер lmdb тепер підтримує додатковий параметр map_size |
Дивіться також
- dba_popen() - встановити постійний екземпляр бази даних
- dba_close() - Закриває базу даних DBA