dba_open データベースをオープンする &reftitle.description; Dba\Connectionfalsedba_open stringpath stringmode stringnullhandler&null; intpermission0644 intmap_size0 intnullflags&null; dba_open は、handler を用いて mode を指定し、path にデータベースインスタンスを生成します。 &reftitle.parameters; 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 ドライバに渡されるオプションの整数パラメータ。 chmodpermissions を同じ意味です。 デフォルトは 0644 です。 db1, db2, db3, db4, dbm, gdbm, ndbm, lmdb ドライバが permission パラメータをサポートしています。 map_size ドライバに渡されるオプションの整数パラメータ。 OS のページサイズの倍数を指定すべきです。 ゼロを指定すると、デフォルトのマップサイズが使われます。 lmdb ドライバだけが map_size パラメータを受け入れます。 flags データベースドライバに渡すフラグ。 &null; の場合、 デフォルトのフラグが渡されます。 現状、LMDB ドライバだけが DBA_LMDB_USE_SUB_DIRDBA_LMDB_NO_SUB_DIR をサポートしています。
&reftitle.returnvalues; 成功した場合に Dba\Connection インスタンスを返します。 &return.falseforfailure;。 &reftitle.errors; handler に &null; が指定されているのにデフォルトのハンドラが存在しない場合、 E_WARNING レベルのエラーが発生し、 &false; が返されます。 &reftitle.changelog; &Version; &Description; 8.4.0 Dba\Connection インスタンスを返すようになりました。 これより前のバージョンでは、&resource; を返していました。 8.2.0 flags が追加されました。 8.2.0 handler は、nullable になりました。 7.3.14, 7.4.2 lmdb ドライバは、 map_size パラメータを追加でサポートしました。 &reftitle.seealso; dba_popen dba_close