运行时配置

这些函数的行为受 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,它来自 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 个字节。

注意
对于长列,分配的大小可能会超过 DB2 中定义的上限,因为原始列是 6 倍。这会导致结果数据变为 null。
Satoru Yoshida
11 年前
ibm_db2.i5_allow_commit 的解释对我来说有点难以理解。

我认为最好用“无法使用提交控制”或“不允许事务”替换“不提交”,并将“允许提交”更改为
“可以使用提交控制”或“允许事务”,谢谢。
To Top