如何在PHP-CGI PDO iSeries Access UnixODBC连接上使用连接池


How do I get connection pooling working on a PHP-CGI PDO iSeries Access UnixODBC Connection?

我正在尝试使用PHP/PDO和名为iSeries Access for Linux的UnixODBC驱动程序来实现连接池。

我没有在我的PDO构造函数中设置PDO::ATTR_PERSISTENT,因为我想使用池而不是持久性(我在PHP-CGI环境中)。

使用的"连接池"部分http://www.ibm.com/developerworks/systems/library/es-linux_bestpract.html我已放置

Pooling = Yes

在我的odbc.ini和中

CPTimeout = 600 

在我的odbcinst.ini 中

但是,ODBC驱动程序似乎不是连接池,因为每次刷新页面都会生成与CPIAD09相关的传入连接消息。

以下是我完整的ODBC配置文件:

==== odbc.ini ====
[AS400]
Description             = Production AS/400 Database
Driver                  = iSeries Access ODBC Driver
System                  = XXX.XXX.X.X
UserID                  = XXXXXXXX
Password                = XXXXXXXX
Naming                  = 0
DefaultLibraries        = USERLIB, BPCSF, ADV, WEB, RITAUSR
Database                =
ConnectionType          = 0
CommitMode              = 2
ExtendedDynamic         = 0
DefaultPkgLibrary       = QGPL
DefaultPackage          = A/DEFAULT(IBM),2,0,1,0,512
AllowDataCompression    = 1
LibraryView             = 0
AllowUnsupportedChar    = 0
ForceTranslation        = 0
Trace                   = 0
DSN                     = AS400
Pooling                 = Yes

==== odbcinst.ini ====
[iSeries Access ODBC Driver]
Description     = iSeries Access for Linux ODBC Driver
Driver          = /opt/ibm/iSeriesAccess/lib/libcwbodbc.so
Setup           = /opt/ibm/iSeriesAccess/lib/libcwbodbcs.so
NOTE1           = If using unixODBC 2.2.11 or later and you want the 32 and 64-bit ODBC drivers to share DSN's,
NOTE2           = the following Driver64/Setup64 keywords will provide that support.
Driver64        = /opt/ibm/iSeriesAccess/lib64/libcwbodbc.so
Setup64         = /opt/ibm/iSeriesAccess/lib64/libcwbodbcs.so
Threading       = 2
DontDLClose     = 1
UsageCount      = 1
CPTimeout       = 600

增加连接池的数量将始终持续。

Pooling         = Yes

这需要在odbcinst.ini中的[ODBC]下,而不是在ODBC.ini文件下

CPTimeout       = 600

将其放入odbc.ini