對我來說,ibm_db2.i5_dbcs_alloc 的說明似乎很難理解。
在 ibm_db2 擴充功能內部,如果 i5_dbcs_alloc 值為 1,則會配置字串欄位長度的 6 倍。
配置的區域用於 UTF-8 和 EBCDIC 字元編碼之間的轉換。
根據 UTF-8 的定義,字母長度最多可能需要 6 個位元組。
注意
在長欄位的情況下,由於原始欄位是 6 倍計算,配置的大小可能會超出 DB2 中定義的上限。這可能會導致結果資料變為 null。
這些函式的行為會受到 php.ini 中的設定影響。
名稱 | 預設值 | 可變更 | 變更記錄 |
---|---|---|---|
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 作業系統上會被忽略。
對我來說,ibm_db2.i5_dbcs_alloc 的說明似乎很難理解。
在 ibm_db2 擴充功能內部,如果 i5_dbcs_alloc 值為 1,則會配置字串欄位長度的 6 倍。
配置的區域用於 UTF-8 和 EBCDIC 字元編碼之間的轉換。
根據 UTF-8 的定義,字母長度最多可能需要 6 個位元組。
注意
在長欄位的情況下,由於原始欄位是 6 倍計算,配置的大小可能會超出 DB2 中定義的上限。這可能會導致結果資料變為 null。
對我來說,ibm_db2.i5_allow_commit 的說明似乎有點難以理解。
我認為最好將「no commit」替換為「can not use commitment control」或「do not allow transaction」,並且將「allow commit」更改為
「can use commitment control」或「allow transaction」,謝謝。