PHPKonf 2025 Baku

実行時設定

php.ini の設定により動作が変化します。

ibm_db2 設定オプション
名前 デフォルト 変更可能 変更履歴
ibm_db2.binmode "1" INI_ALL  
ibm_db2.i5_all_pconnect "0" INI_SYSTEM ibm_db2 1.6.5 以降で利用可能
ibm_db2.i5_allow_commit "0" INI_SYSTEM ibm_db2 1.4.9 以降で利用可能
ibm_db2.i5_blank_userid "0" INI_SYSTEM ibm_db2 1.9.7 以降で利用可能
ibm_db2.i5_char_trim "0" INI_SYSTEM ibm_db2 2.1.0 以降で利用可能
ibm_db2.i5_dbcs_alloc "0" INI_SYSTEM ibm_db2 1.5.0 以降で利用可能
ibm_db2.i5_guard_profile "0" INI_SYSTEM ibm_db2 1.9.7 以降で利用可能
ibm_db2.i5_ignore_userid "0" INI_SYSTEM ibm_db2 1.8.0 以降で利用可能
ibm_db2.i5_job_sort "0" INI_SYSTEM ibm_db2 1.8.4 以降で利用可能
ibm_db2.i5_log_verbose "0" INI_SYSTEM ibm_db2 1.9.7 以降で利用可能
ibm_db2.i5_max_pconnect "0" INI_SYSTEM ibm_db2 1.9.7 以降で利用可能
ibm_db2.i5_override_ccsid "0" INI_SYSTEM ibm_db2 1.9.7 以降で利用可能
ibm_db2.i5_servermode_subsystem NULL INI_SYSTEM ibm_db2 1.9.7 以降で利用可能
ibm_db2.i5_sys_naming "0" INI_SYSTEM ibm_db2 1.9.7 以降で利用可能
ibm_db2.instance_name NULL INI_SYSTEM ibm_db2 1.0.2 以降で利用可能

以下に設定ディレクティブに関する 簡単な説明を示します。

ibm_db2.binmode int

このオプションは、バイナリデータを PHP アプリケーションで 使用する際のモードを制御します。

  • 1 (DB2_BINARY)

  • 2 (DB2_CONVERT)

  • 3 (DB2_PASSTHRU)

ibm_db2.i5_all_pconnect int

このオプションは、IBM i 上での接続を強制的にすべて持続的接続にします。 基本的に、すべての db2_connect() 関数のコールは透過的に db2_pconnect() のコールになります。 デフォルトでは、このオプションの値は 0 です。 このオプションは、持続的接続が高速な場合のために便宜上提供されています。 新しいアプリケーションでは、このオプションを使うべきではありません。

  • 0 - 持続的接続、およびそうでない接続の両方を作成できます

  • 1 - すべての接続を持続的接続にします

ibm_db2.i5_allow_commit int

このオプションは、トランザクションの分離レベルを制御します。 デフォルトでは、このオプションの値は 0 です。 よって、コミットの制御は使いません。 このオプションは、配列のキー i5_commit を接続オプションの配列に設定し、 db2_connect()db2_pconnect() に渡すことで上書きできます。

  • 0 - コミット制御を使いません。

  • 1 - read uncommitted。ダーティリードの可能性があります。

  • 2 - read committed。ダーティリードは発生しません。

  • 3 - repeatable read。ダーティリードや非再現リードは発生しません。

  • 4 - serializeable。ダーティリードや非再現リードやファントムリードは発生しません。

ibm_db2.i5_blank_userid int

IBM i 上で空のユーザーIDを許可すべきかどうかを制御します。 デフォルトでは、このオプションの値は 0 です。 ibm_db2.i5_ignore_userid と異なり、 このオプションはすべてのユーザーIDを強制的に空にしたり、 ジョブの振る舞いを変えたりはしません。 ただ単に、Db2 に現在のユーザーとしてする際、 空のユーザーIDを渡すことを許可するだけです。

  • 0 - ユーザーIDを空で渡すことを許可しません

  • 1 - ユーザーIDを空で渡すことを許可します。

ibm_db2.i5_char_trim int

このオプションは、IBM i における文字列の右端をトリム処理するかを制御します。 多くのテーブルは固定のカラムサイズを持ち、スペースで埋められているため、 このオプションが便宜のため提供されています。 デフォルトでは、このオプションの値は 0 です。

  • 0 - カラムの値はトリム処理されません。

  • 1 - 返される文字カラムの右端のスペースが削除されます。

ibm_db2.i5_dbcs_alloc int

このオプションは、IBM i における内部バッファの割当て戦略に影響します。 デフォルトでは、このオプションの値は 0 です。 このオプションを設定した場合、 エンコーディング変換時にデータベースが文字列サイズを過小評価した場合に備えて、 さらに大きなサイズのバッファが割り当てられます。 このオプションはバッファ用に6倍のメモリを使用します(最大サイズのUTF-8シーケンスに対応するため)。 切り詰められたデータが返される場合に必要となる可能性があります。

  • 0 - 最低限のバッファサイズが割り当てられます

  • 1 - さらに大きなバッファサイズを割り当てます

ibm_db2.i5_guard_profile int

IBM i 上のデータベースに持続的接続する際、 ユーザーのデータベースのプロファイルを切り替えるかどうかをチェックします。 切り替える場合、データベースから切断します。 デフォルトでは、このオプションの値は 0 です。

  • 0 - プロファイルの切換をチェックしません

  • 1 - プロファイルの切換をチェックし、切り替える場合は切断します

ibm_db2.i5_log_verbose int

このオプションは、 IBM i 上で 警告やエラーなどのSQL診断メッセージを、 常に PHP のエラーログに送信するかどうかを設定します。 通常、このオプションはデフォルトで 0 に設定されているため、 失敗時には簡潔なメッセージ(例:「ステートメントの実行に失敗しました」)のみが PHP のエラーログに送信されます。 ただし、関数が失敗したかどうかを確認する目的で db2_stmt_errormsg() を手動で呼び出すことができますし、 またそうすべきである点に注意してください。

  • 0 - 簡潔なメッセージだけをログに残します

  • 1 - 簡潔なメッセージに加えて、SQL診断メッセージをログに残します

ibm_db2.i5_ignore_userid int

IBM i 上で実行される際、かつデータベースに接続する際に、 このオプションはユーザーID を無視します。 また、別々のジョブではなく、PHPジョブの内部でSQL/CLI の機能を実行します。 デフォルトでは、このオプションの値は 0 です。 このオプションを有効にすると、 別々のデータベースサーバーのジョブを使わず、 常に現在のユーザープロファイルを使います。 そして、db2_connect()db2_pconnect() に渡されるユーザー名とパスワードを無視します。

  • 0 - 指定されたクレデンシャルを使い、SQL/CLI サーバーのジョブを使います。

  • 1 - 常に空のクレデンシャルを使い、PHP のジョブ中でSQL/CLI ジョブを実行します

ibm_db2.i5_job_sort int

IBM i におけるジョブソートを制御します。 デフォルトでは、このオプションの値は 0 です。 これは IBM i SQL/CLI の SQL_ATTR_CONN_SORT_SEQUENCE 属性に対応します。

  • 0 - *HEX ソートオプションを使い、 バイト単位でソートを行います。

  • 1 - PHP のジョブ向けにジョブソートのシーケンスを使います。

  • 2 - データベースのジョブ向けにジョブソートのシーケンスを使います。

ibm_db2.i5_max_pconnect int

このオプションは、IBM i 上で実行する際、 何回持続的接続が再利用されるかに影響します。 デフォルトでは、この値は 0 です。 つまり、持続的接続は常に再利用されるということです。 このオプションは、 長時間実行されるデータベースのジョブで起こる問題 (つまり、プロシージャでメモリリークが起きた場合など) を回避されるのに役立ちますが、明らかに長期的に役立つものではないでしょう。

ibm_db2.i5_override_ccsid int

IBM i 上の EBCDIC から文字変換に使用する PASE CCSID。 デフォルトでこの値は 0 であり、 PASE ロケール設定から取得されるデフォルトの PASE ジョブ CCSID を選択します。 たとえば、これを 1208 に設定すると UTF-8 を使用します。 この値は、PASE ジョブの CCSID が期待される CCSID と異なる場合、 かつロケールを変更できない場合にのみ変更してください。

IBM i 上の CCSID についてさらに学ぶ場合は、 » IBM documentation を調べてください。 IBM i 上の PASE がどのように CCSID にマップされているかについては、 » IBM documentation を調べてください。

ibm_db2.i5_sys_naming int

このオプションは、IBM i システムに接続する際の命名モードを制御します。 デフォルトでは、このオプションの値は 0 です。 命名モードは、名前の解決方法と名前に許可される構文に影響します。 0 に設定すると、名前の修飾にピリオドを使用し、 名前解決にはデフォルトのライブラリまたはユーザーIDを使用します。 1 に設定すると、名前の修飾にスラッシュを使用し、 名前解決にはジョブライブラリリストを使用します。

  • 0 - SQL の命名モードを使う("SCHEMA.TABLE").

  • 1 - システムの命名モードを使う("LIBRARY/FILE").

IBM i 上の命名モードについて学ぶには、 » IBM documentation を調べてください。

ibm_db2.i5_servermode-subsystem string

このオプションは、 IBM i 上でどのサブシステムデータベースサーバージョブが実行されるかを変更します。 デフォルトでは、このオプションは null であるため、 ジョブは QSQSRVR ジョブのデフォルトサブシステムで実行されます。

ibm_db2.instance_name string

Linux や UNIX オペレーティングシステムにおいて、 このオプションはカタログされたデータベースへの接続で使う、 インスタンス名を定義します。 デフォルトでは、このオプションの値は null です。 このオプションを設定すると、 環境変数 DB2INSTANCE の値を上書きします。

Windows では、このオプションの値は無視されます。

add a note

User Contributed Notes 2 notes

up
1
yoshida at zend dot co dot jp
14 years ago
The explanation of ibm_db2.i5_dbcs_alloc seems to be hard to understand for me.

In ibm_db2 extension inside, 6 times length of string column is allocated if i5_dbcs_alloc value is 1.
The allocated area is used for conversion between UTF-8 and EBCDIC character encodings.

By the definition of UTF-8, letter length can need 6 bytes at the maximum.

Note:
In the case of a long column, allocated size may be beyond the upper limit defined in DB2 because original column is made by 6 times. It can cause result data becomes null.
up
0
Satoru Yoshida
12 years ago
The explanation of ibm_db2.i5_allow_commit seems to be slightly difficult to understand for me.

I think it would be better to replace "no commit" with "can not use commitment control" or "do not allow transaction", and "allow commit" would be changed into
"can use commitment control" or "allow transaction" , Thanks.
To Top