PHP 日本研討會 2024

執行期配置

這些函式的行為會受到 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,因此不使用承諾控制。如果在傳遞至 db2_connect()db2_pconnect() 的連線選項陣列中設定了陣列鍵 i5_commit,則可以在連線時覆寫此選項。

  • 0 - 不使用承諾控制

  • 1 - 讀取未提交,可能讀取到髒資料。

  • 2 - 讀取已提交,不可能讀取到髒資料。

  • 3 - 可重複讀取,不可能讀取到髒資料和不可重複讀取。

  • 4 - 可序列化,不可能讀取到髒資料、不可重複讀取和幻影資料。

ibm_db2.i5_blank_userid int

這控制是否允許在 IBM i 上使用空白的使用者 ID。預設情況下,此選項為 0。與 ibm_db2.i5_ignore_userid 不同,此選項不會強制所有使用者 ID 為空或變更作業行為,而只是允許傳遞空的的使用者 ID,以目前使用者身分連線到 Db2。

  • 0 - 不允許傳遞空白的使用者 ID。

  • 1 - 允許傳遞空白的使用者 ID。

ibm_db2.i5_char_trim int

此選項控制是否在 IBM i 上修剪字串的結尾。由於許多表格使用以空格填補的固定欄大小,因此提供此選項是為了方便起見。預設情況下,此選項為 0

  • 0 - 不修剪欄。

  • 1 - 移除傳回的字元欄結尾的空格。

ibm_db2.i5_dbcs_alloc int

此選項會影響 IBM i 上的內部緩衝區配置策略。預設情況下,此選項為 0。設定此選項時,緩衝區會配置為更大的大小,以防資料庫在編碼之間轉換時低估字串的大小。此選項會使用六倍的緩衝區記憶體(以考慮最大的 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 錯誤記錄。通常,只有失敗時的簡短訊息(例如「語句執行失敗」)會傳送至 PHP 錯誤記錄,因為預設情況下此選項設定為 0。請注意,您仍然可以(並且應該)手動呼叫,例如 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 作業 CCSID,該 CCSID 來自 PASE 地區設定。例如,將此設定為 1208 將使用 UTF-8。只有在 PASE 作業 CCSID 不是預期的 CCSID,且無法修改地區設定時,才應修改此設定。

若要深入瞭解 IBM i 上的 CCSID,請參閱 » IBM 文件。若要瞭解 IBM i PASE 上的地區設定如何對應至 CCSID,請參閱 » IBM 文件

ibm_db2.i5_sys_naming int

此選項控制連線至 IBM i 系統時的命名模式。預設情況下,此選項為 0。命名模式會影響名稱的解析方式以及名稱允許的語法。當設定為 0 時,會使用句點來限定名稱,並使用預設的程式庫或使用者 ID 來解析名稱。當設定為 1 時,會使用斜線來限定名稱,並使用工作程式庫清單來解析名稱。

  • 0 - 使用 SQL 命名模式("SCHEMA.TABLE")。

  • 1 - 使用系統命名模式("LIBRARY/FILE")。

若要深入了解 IBM i 上的命名模式,請參閱 » IBM 文件

ibm_db2.i5_servermode-subsystem string

此選項會變更 IBM i 上資料庫伺服器工作執行的子系統。預設情況下,此選項為 null,因此工作將在 QSQSRVR 工作的預設子系統下執行。

ibm_db2.instance_name string

在 Linux 和 UNIX 作業系統上,此選項定義用於編目資料庫連線的實例名稱。預設情況下,此選項為 null。如果設定此選項,則其值會覆寫 DB2INSTANCE 環境變數設定。

此選項在 Windows 作業系統上會被忽略。

新增註解

使用者提供的註解 2 則註解

yoshida at zend dot co dot jp
13 年前
對我來說,ibm_db2.i5_dbcs_alloc 的說明似乎很難理解。

在 ibm_db2 擴充功能內部,如果 i5_dbcs_alloc 值為 1,則會配置字串欄位長度的 6 倍。
配置的區域用於 UTF-8 和 EBCDIC 字元編碼之間的轉換。

根據 UTF-8 的定義,字母長度最多可能需要 6 個位元組。

注意
在長欄位的情況下,由於原始欄位是 6 倍計算,配置的大小可能會超出 DB2 中定義的上限。這可能會導致結果資料變為 null。
Satoru Yoshida
11 年前
對我來說,ibm_db2.i5_allow_commit 的說明似乎有點難以理解。

我認為最好將「no commit」替換為「can not use commitment control」或「do not allow transaction」,並且將「allow commit」更改為
「can use commitment control」或「allow transaction」,謝謝。
To Top