Firebird/InterBase は ANSI SQL-92 の多くの機能をサポートする リレーショナルデータベースで、Linux・Windows その他多くの Unix プラットフォーム上で動作します。Firebird/InterBase は 優れた同時実行性・パフォーマンス、そしてストアドプロシージャや トリガでの強力な言語サポートを提供します。1981 年以降、このデータベースは さまざまな名前の製品として使用されています。
InterBase はこの RDBMS のクローズドソース版の名前で、Borland/Inprise によって開発されました。InterBase についての詳細な情報は http://www.borland.com/interbase/ にあります。
Firebird は C・C++プログラムやテクニカルアドバイザやサポーターたちによる 商業的に独立したプロジェクトです。Inprise Corp(現在は Borland Software Corp という名で知られています)が 2000 年 7 月 25 日に InterBase Public License v.1.0 の下で公開したソースコードをもとにして、 マルチプラットフォームなリレーショナルデータベースの開発と機能拡張を 行っています。Firebird についての詳細な情報は http://www.firebirdsql.org/ にあります。
PHP で InterBase サポートを有効にするには、
--with-interbase[=DIR]
を指定して
設定を行います。ただし、DIR は InterBase のベースインストールディレクトリで、
デフォルトは /usr/interbase です。
Win32 ユーザへの注意: この拡張モジュールを動作させるには、 Windows システムの PATH が通った場所に DLL ファイルが存在する必要があります。 FAQ の "Windows で PHP のディレクトリを PATH に追加するにはどうすればいいのですか?" で、その方法を説明しています。 DLL ファイルを PHP のフォルダから Windows のシステムディレクトリにコピーしても動作します (システムディレクトリは、デフォルトで PATH に含まれるからです) が、これは推奨しません。 この拡張モジュールを使用するには、以下のファイルが PATH の通った場所にある必要があります。 gds32.dll
InterBase データベースサーバを PHP と同じマシンにインストールしている場合は、 すでに DLL が存在するはずです。その場合は特に何も考える必要はありません。 というのも gds32.dll はすでに PATH の通った場所に存在するからです。
php.ini の設定により動作が変化します。
表 1. InterBase設定オプション
名前 | デフォルト | 変更の可否 | 変更履歴 |
---|---|---|---|
ibase.allow_persistent | "1" | PHP_INI_SYSTEM | |
ibase.max_persistent | "-1" | PHP_INI_SYSTEM | |
ibase.max_links | "-1" | PHP_INI_SYSTEM | |
ibase.default_db | NULL | PHP_INI_SYSTEM | PHP 5.0.0 以降で使用可能です。 |
ibase.default_user | NULL | PHP_INI_ALL | |
ibase.default_password | NULL | PHP_INI_ALL | |
ibase.default_charset | NULL | PHP_INI_ALL | PHP 5.0.0 以降で使用可能です。 |
ibase.timestampformat | "%Y-%m-%d %H:%M:%S" | PHP_INI_ALL | |
ibase.dateformat | "%Y-%m-%d" | PHP_INI_ALL | |
ibase.timeformat | "%H:%M:%S" | PHP_INI_ALL |
以下に設定ディレクティブに関する 簡単な説明を示します。
ibase.allow_persistent
booleanFirebird/InterBase 持続的な接続 を許可するかどうか。
ibase.max_persistent
integerプロセスごとの、Firebird/InterBase の持続的接続の最大数。 この数を超えた場合、ibase_pconnect() による新しい接続は 持続的ではない接続になります。
ibase.max_links
integerプロセスごとの Firebird/InterBase の接続の最大数。持続的な接続の数も 含みます。
ibase.default_db
stringデータベース名を指定せずに ibase_[p]connect() がコールされた場合に 接続するデフォルトのデータベース。この値が設定されており、かつ SQL セーフモードが有効な場合、このデータベース以外への接続は一切許可されません。
ibase.default_user
stringユーザ名を指定せずにデータベースに接続した際に使用されるユーザ名。
ibase.default_password
stringパスワードを指定せずにデータベースに接続した際に使用されるパスワード。
ibase.default_charset
string文字セットを指定せずにデータベースに接続した際に使用される文字セット。
ibase.timestampformat
string
ibase.dateformat
string
ibase.timeformat
stringこれらのディレクティブは日付や時間のフォーマットを指定します。 結果セットの中の日付や時間のデータ、そしてパラメータとしてバインドする 日付や時間のデータに適用されます。
以下の定数が定義されています。 この関数の拡張モジュールが PHP 組み込みでコンパイルされているか、 実行時に動的にロードされている場合のみ使用可能です。
トランザクションの挙動を設定するため、以下の定数を ibase_trans() に渡すことが可能です。
表 2. Firebird/InterBase トランザクションフラグ
定数 | 説明 |
---|---|
IBASE_DEFAULT | デフォルトのトランザクション設定が使用されます。デフォルト設定は クライアントライブラリによって決定され、たいていの場合は IBASE_WRITE|IBASE_CONCURRENCY|IBASE_WAIT です。 |
IBASE_READ | 読み込み専用のトランザクションを開始します。 |
IBASE_WRITE | 読み書き可能なトランザクションを開始します。 |
IBASE_CONSISTENCY | 分離レベルを 'consistency' にしてトランザクションを開始します。 他のトランザクションによって変更中のテーブルを読み込むことは できません。 |
IBASE_CONCURRENCY | 分離レベルを 'concurrency' (あるいは 'snapshot') にして トランザクションを開始します。すべてのテーブルへのアクセスが 可能ですが、トランザクションの開始以降に別のトランザクションに よってコミットされた内容を見ることはできません。 |
IBASE_COMMITTED | 分離レベルを 'read committed' にしてトランザクションを開始します。 このフラグは IBASE_REC_VERSION あるいは IBASE_REC_NO_VERSION とともに使用する必要があります。 トランザクションの開始以降にコミットされた内容についてもアクセス可能と なります。IBASE_REC_NO_VERSION が指定された場合、 最新バージョンのデータのみが読み込み可能となります。 IBASE_REC_VERSION が指定された場合、他の トランザクションで処理が完了していない変更についても読み込むことが できます。 |
IBASE_WAIT | 衝突が発生した場合に、トランザクションが処理を再試行することを示します。 |
IBASE_NOWAIT | 衝突が発生した場合に、トランザクションがその場で処理を中断して 処理が失敗することを示します。 |
データの取得方法を指定するために、以下の定数を ibase_fetch_row()、 ibase_fetch_assoc() あるいは ibase_fetch_object() に渡すことが可能です。
表 3. Firebird/InterBase フェッチフラグ
定数 | 説明 |
---|---|
IBASE_FETCH_BLOBS | 過去との互換性を保持するため、IBASE_TEXT としても使用可能です。BLOB データを読み込む際に、BLOB ID ではなく 直接データそのものを読み込みます。 |
IBASE_FETCH_ARRAYS | 配列をインラインで読み込みます。指定しなかった場合は、配列の ID を返します。配列 ID は INSERT 操作への引数としてのみ使用可能で、 配列 ID を処理できる関数は現在存在しません。 |
IBASE_UNIXTIME | 日付や時刻のフィールド値を、文字列ではなく UNIX タイムスタンプ (1-Jan-1970 0:00 UTC からの経過秒数)で返します。 1970 年より前の日付に対してこれを使用すると、環境によっては 問題を引き起こす可能性があります。 |
要求内容やオプションを指定するために、以下の定数を サービス API 関数(ibase_server_info(), ibase_db_info(), ibase_backup(), ibase_restore() および ibase_maintain_db())に渡すことが可能です。 これらのオプションの意味については Firebird/InterBase のマニュアルを 参照ください。
ibase_backup() へのオプション
ibase_restore() へのオプション
ibase_maintain_db() へのオプション
ibase_db_info() へのオプション
ibase_server_info() へのオプション