(PHP 4, PHP 5, PHP 7, PHP 8)
dba_open — データベースをオープンする
$path
,$mode
,$handler
= ?,...$args
dba_open() は、handler
を用いて
mode
を指定し、path
にデータベースインスタンスを生成します。
path
通常のファイルシステムのパス。
mode
既存のデータベースへの読み込みアクセスには "r"、読込み/書き込み アクセスには "w" を指定します。 読み込み/書き込みアクセスおよび存在しない場合にデータベースの作成を するには "c" を、そして作成、削除、読込み/書き込みアクセス用には "n" を指定します。データベースは BTree モードで作られます。 その他のモード (Hash や Queue) には対応していません。
さらに、次の文字でデータベースのロック方法を指定することができます。 .lck でデータベースをロックする場合には "l"、 データベースファイル自体をロックする場合は "d" を使用してください。 アプリケーション全体で統一した方法を用いることが重要です。
アクセスのテストを行う際にロックのために待ちたくない場合、"t" を 3 番目の文字に追加することができます。明らかにデータベースのロックが 不要な場合には、"l" や "d" の代わりに "-" を使用してロックを 行わないことができます。"d"、"l" または "-" のどれも指定されない場合、 "d"が指定されたものとしてデータベースファイルをロックします。
注意:
ひとつのデータベースファイルに同時に書き込めるのは、ひとつだけです。 dba を Web サーバーで使用している際に複数のリクエストが書き込み処理を 行う必要がある場合、他の書き込みが終わってからでないと次の書き込みを 行うことができません。また、書き込み中に読み込むことはできません。 dba 拡張モジュールは、このようなことを防止するためにロックを使用します。 以下の表を参照してください:
DBA のロック処理 既にオープンしているデータベース mode
= "rl"mode
= "rlt"mode
= "wl"mode
= "wlt"mode
= "rd"mode
= "rdt"mode
= "wd"mode
= "wdt"not open 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: 2 番目のコールは成功します。
- wait: 2 番目のコールは、最初のデータベースで dba_close() がコールされるまで待ちます。
- false: 2 番目のコールは、false を返します。
- illegal:
mode
パラメータで"l"
および"d"
を同時に使用することはできません。
handler
path
にアクセスする際に使用する
ハンドラの名前。
dba_open() に指定したすべてのオプションが
渡され、その機能を用いることができます。
args
ドライバに渡すオプションの string パラメータ
cdb
, cdb_make
, flatfile
,
inifile
, qdbm
。
そして tcadb
ドライバは追加のパラメータをサポートしていません。
db1
, db2
, db3
,
db4
, dbm
, gdbm
。
そして、 ndbm
ドライバは追加パラメータ
$filemode
をサポートしています。
これは chmod() のパラメータ $mode
と同じ意味を持ち、
デフォルトは 0644
です。
lmdb
ドライバは追加パラメータをふたつサポートします。
ひとつめは $filemode
(説明は上を参照してください) で、
ふたつめは OS のページサイズを複数指定する $mapsize
です。
$mapsize
に 0 を指定した場合は、デフォルトの値が使われます。
$mapsize
パラメータは PHP 7.3.14 と 7.4.2 以降でサポートされています。
成功した場合に正のハンドル、失敗した場合に false
を返します。
バージョン | 説明 |
---|---|
7.3.14, 7.4.2 |
lmdb ドライバは $mapsize パラメータを追加でサポートしました。
|