ibm_db2.i5_dbcs_alloc 的解释对我来说很难理解。
在 ibm_db2 扩展内部,如果 i5_dbcs_alloc 值为 1,则分配字符串列长度的 6 倍。
分配的区域用于在 UTF-8 和 EBCDIC 字符编码之间进行转换。
根据 UTF-8 的定义,字母长度最多需要 6 个字节。
注意
对于长列,分配的大小可能会超过 DB2 中定义的上限,因为原始列是 6 倍。这会导致结果数据变为 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,它来自 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 个字节。
注意
对于长列,分配的大小可能会超过 DB2 中定义的上限,因为原始列是 6 倍。这会导致结果数据变为 null。
ibm_db2.i5_allow_commit 的解释对我来说有点难以理解。
我认为最好用“无法使用提交控制”或“不允许事务”替换“不提交”,并将“允许提交”更改为
“可以使用提交控制”或“允许事务”,谢谢。