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"
не відкритаokokokokokokokok
mode = "rl"okokwaitfalseillegalillegalillegalillegal
mode = "wl"waitfalsewaitfalseillegalillegalillegalillegal
mode = "rd"illegalillegalillegalillegalokokwaitfalse
mode = "wd"illegalillegalillegalillegalwaitfalsewaitfalse
  • 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