dba_open
dba_open — データベースをオープンする
説明
resource dba_open ( string path, string mode [, string handler [, mixed ...]] )dba_open() は、handler を用いて mode を指定し、path にデータベースインスタンスを生成します。
パラメータ
- path
-
通常のファイルシステムのパス。
- mode
-
既存のデータベースへの読み込みアクセスには "r"、読込み/書き込み
アクセスには "w" を指定します。
読み込み/書き込みアクセスおよび存在しない場合にデータベースの作成を
するには "c" を、そして作成、削除、読込み/書き込みアクセス用には
"n" を指定します。
さらに、次の文字でデータベースのロック方法を指定することができます。 .lck でデータベースをロックする場合には "l"、 データベースファイル自体をロックする場合は "d" を使用してください。 アプリケーション全体で統一した方法を用いることが重要です。
アクセスのテストを行う際にロックのために待ちたくない場合、"t" を 3 番目の文字に追加することができます。明らかにデータベースのロックが 不要な場合には、"l" や "d" の代わりに "-" を使用してロックを 行わないことができます。"d"、"l" または "-" のどれも指定されない場合、 "d"が指定されたものとしてデータベースファイルをロックします。
注意: ひとつのデータベースファイルに同時に書き込めるのは、ひとつだけです。 dba を Web サーバで使用している際に複数のリクエストが書き込み処理を 行う必要がある場合、他の書き込みが終わってからでないと次の書き込みを 行うことができません。また、書き込み中に読み込むことはできません。 dba 拡張モジュールは、このようなことを防止するためにロックを使用します。 以下の表を参照してください:
表 49. 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() に指定したすべてのオプションが
渡され、その機能を用いることができます。
返り値
成功した場合に正のハンドル、失敗した場合に FALSE を返します。変更履歴
バージョン | 説明 |
---|---|
4.3.0 | ネットワーク接続されたデータベースファイルをオープンすることができます。 しかし、(http や ftp のような)ソケット接続が使用された場合、 リソース自体ではなくこの接続がロックされます。このような場合、 このリソースに関してのロック処理は単に無視されることになり、 他の解決策を見付ける必要があることに留意する必要があります。 |
4.3.0 | ロック処理と mode 修正子 "l", "d", "-", "t" が追加されました。 以前のバージョンの PHP では、GDBM 以外のデータベースハンドラで 同時データベースアクセスに対する保護を行うためには、セマフォを 使用する必要がありました。 System V セマフォサポート を参照ください。 |
4.3.5 以前 | オープンモード 'c' はいくつかの内部ハンドラでは正常に動作せず、 既存のデータベースにデータを追加するのではなく、データベースを 切り捨ててしまっていました。また、dbm と ndbm は典型的な設定で モード 'c' の処理が正常に動作しません(これは修正できません)。 |
参考
dba_popen() |
dba_close() |
Weblioに収録されているすべての辞書からdba_openを検索する場合は、下記のリンクをクリックしてください。

- dba_openのページへのリンク