dba_popen

Open database persistently

&reftitle.description; ``resource``false```dba_popen` `string` `path` `string` `mode` ``string``null```handler`&null; `int` `permission` 0644 `int` `map_size` 0 ``int``null```flags`&null;

`dba_popen` establishes a persistent database instance for `path` with `mode` using `handler`.

&reftitle.parameters;

`path`

- Commonly a regular path in your filesystem.

`mode`

- It is `r` for read access, `w` for read/write access to an already existing database, `c` for read/write access and database creation if it doesn't currently exist, and `n` for create, truncate and read/write access.

`handler`

- The name of the handler which shall be used for accessing `path`. It is passed all optional parameters given to `dba_popen` and can act on behalf of them. If `handler` is &null;, then the default handler is invoked.

`permission`

- Optional &integer; parameter which is passed to the driver. It has the same meaning as the `permissions` parameter of `chmod`, and defaults to `0644`.

  The `db1`, `db2`, `db3`, `db4`, `dbm`, `gdbm`, `ndbm`, and `lmdb` drivers support the `permission` parameter.

`map_size`

- Optional &integer; parameter which is passed to the driver. Its value should be a multiple of the page size of the OS, or zero, to use the default mapsize.

  The `lmdb` driver accepts the `map_size` parameter.

`flags`

- Allows to pass flags to the DB drivers. Currently, only LMDB with `DBA_LMDB_USE_SUB_DIR` and `DBA_LMDB_NO_SUB_DIR` are supported.

&reftitle.returnvalues;

Returns a positive handle on success&return.falseforfailure;.

&reftitle.errors;

&false; is returned and an `E_WARNING` level error is issued when `handler` is &null;, but there is no default handler.

&reftitle.changelog;

&Version; | &Description;
8.2.0 | `flags` is added.
8.1.0 | `handler` is now nullable.
7.3.14, 7.4.2 | The `lmdb` driver now supports an additional `map_size` parameter.

&reftitle.seealso;

- `dba_open`
- `dba_close`