説明
Dba\Connectionfalse 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 をサポートしています。
戻り値
成功した場合に Dba\Connection インスタンスを返します。
失敗した場合に false を返します。
エラー / 例外
handler
に null が指定されているのにデフォルトのハンドラが存在しない場合、
E_WARNING レベルのエラーが発生し、
false が返されます。