(PHP 4, PHP 5, PHP 7, PHP 8)
dba_open — 打开数据库
$path,$mode,$handler = null,$permission = 0644,$map_size = 0,$flags = null
dba_open() 用 mode 和 handler 为 path 建立一个数据库实例。
path数据库文件的路径。通常是文件系统中的一个常规路径。
mode
一个字符串,指定数据库的访问模式。它是一个字符,可以是 r 用于读取访问,
w 用于对已存在的数据库进行读写访问,
c 用于读写访问和数据,如果目前不存在,则创建数据库,
以及 n 用于创建、截断和读写访问。
数据库是以 BTree 模式创建的,不支持其他模式(如 Hash 或 Queue)。
此外,您可以使用下一个字符设置数据库锁定方法。使用 l 用 .lck
文件锁定数据库,或使用 d 锁定数据库文件本身。重要的是您的所有应用程序都要一致地这样做。
如果您想测试访问并且不想等待锁定,可以将 t 作为第三个字符添加。当您确信不需要数据库锁定时,
可以使用 - 代替 l 或 d。当 d、
l 或 - 都没有使用时,dba 将锁定数据库文件,就像使用 d 一样。
注意:
一个数据库文件只能有一个写入者。当您在 web 服务器上使用 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 参数,传递给驱动程序。它的含义与 chmod() 的 permissions 参数相同,
默认为 0644。
db1、db2、db3、db4、
dbm、gdbm、ndbm 和 lmdb
驱动程序支持 permission 参数。
map_size可选的 int 参数,传递给驱动程序。它的值应该是 OS 的页面大小的倍数,或者是零,以使用默认的映射大小。
只有 lmdb 驱动程序接受 map_size 参数。
flags
传递给数据库驱动程序的标志。如果 null,将提供默认标志。
目前,只有 LMDB 驱动程序支持以下标志
DBA_LMDB_USE_SUB_DIR 和
DBA_LMDB_NO_SUB_DIR。
成功时返回一个 Dba\Connection 实例, 或者在失败时返回 false。
| 版本 | 说明 |
|---|---|
| 8.4.0 | 现在返回一个 Dba\Connection 实例; 以前返回一个 resource。 |
| 8.2.0 |
flags 参数被添加。
|
| 8.2.0 |
handler 现在可以为 null。
|
| 7.3.14, 7.4.2 |
lmdb 驱动现在支持额外的 map_size 参数。
|