説明
resourcefalse dba_open(
string $path
,
string $mode
,
stringnull $handler
= null
,
int $permission
= 0644,
int $map_size
= 0,
intnull $flags
= null
)
パラメータ
-
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 に指定したすべてのオプションが渡され、
その機能を用いることができます。
handler
が null
の場合、
デフォルトのハンドラが使われます。
-
permission
-
ドライバに渡されるオプションの整数パラメータ。
chmod の
permissions
を同じ意味です。
デフォルトは 0644
です。
db1
, db2
, db3
,
db4
, dbm
, gdbm
,
ndbm
, lmdb
ドライバが
permission
パラメータをサポートしています。
-
map_size
-
ドライバに渡されるオプションの整数パラメータ。
OS のページサイズの倍数を指定すべきです。
ゼロを指定すると、デフォルトのマップサイズが使われます。
lmdb
ドライバだけが
map_size
パラメータを受け入れます。
-
flags
-
データベースドライバに渡すフラグ。
null
の場合、
デフォルトのフラグが渡されます。
現状、LMDB ドライバだけが
DBA_LMDB_USE_SUB_DIR
と
DBA_LMDB_NO_SUB_DIR
をサポートしています。
戻り値
成功した場合に正のハンドルを返します。
失敗した場合に false
を返します。
エラー / 例外
handler
に null
が指定されているのにデフォルトのハンドラが存在しない場合、
E_WARNING
レベルのエラーが発生し、
false
が返されます。