如何使用PHP-CGI PDO iSeries Access UnixODBC Connection连接池? [英] How do I get connection pooling working on a PHP-CGI PDO iSeries Access UnixODBC Connection?
问题描述
我没有将PDO :: ATTR_PERSISTENT设置为使用PHP / PDO连接到UnixODBC驱动程序,名为iSeries Access for Linux。我的PDO构造函数,因为我想使用池而不是持久性(我在一个PHP-CGI环境中)。
使用<连接池部分 http://www.ibm.com/developerworks/systems/library/es-linux_bestpract.html 我已经把
Pooling = Yes
$ p $在我的odbc.ini和
CPTimeout = 600
中,p>
在我的odbcinst.ini
似乎ODBC驱动程序不是连接池,因为每个页面刷新都会生成正在进行的传入连接的CPIAD09相关消息。
这是我的完整ODBC配置文件:
==== odbc.ini ====
[AS400]
描述=生产AS / 400数据库
驱动程序= iSeries访问ODBC驱动程序
系统= XXX.XXX.XX
用户ID = XXXXXXXX
密码= XXXXXXXX
命名= 0
默认列表= USERLIB,BPCSF,ADV,WEB,RITAUSR
数据库=
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
池= =
和
==== odbcinst.ini ====
[iSeries Access ODBC驱动程序]
描述= iSeries访问f或Linux ODBC驱动程序
驱动程序= /opt/ibm/iSeriesAccess/lib/libcwbodbc.so
安装程序= /opt/ibm/iSeriesAccess/lib/libcwbodbcs.so
NOTE1 =如果使用unixODBC 2.2 .11或更高版本,您希望32位和64位ODBC驱动程序共享DSN,
NOTE2 =以下Driver64 / Setup64关键字将提供该支持。
Driver64 = /opt/ibm/iSeriesAccess/lib64/libcwbodbc.so
Setup64 = /opt/ibm/iSeriesAccess/lib64/libcwbodbcs.so
线程= 2
DontDLClose = 1
使用量= 1
CPTimeout = 600
解决方案
Pooling = Yes
ODBC]在您的odbcinst.ini而不是您的odbc.ini文件
CPTimeout = 600
将其放在您的odbc.ini中
I am trying to get connection pooling working using PHP/PDO with a UnixODBC driver called iSeries Access for Linux.
I do not set the PDO::ATTR_PERSISTENT in my PDO constructor as I want to use pooling and not persistence (I am in a PHP-CGI environment).
Using the "Connection Pooling" section of http://www.ibm.com/developerworks/systems/library/es-linux_bestpract.html I have placed
Pooling = Yes
in my odbc.ini and
CPTimeout = 600
in my odbcinst.ini
However, it seems that the ODBC driver is not connection pooling because every page refresh generates the CPIAD09 related message of an incoming connection being made.
Here are my full ODBC configuration files:
==== 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
and
==== 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
This needs to go under [ODBC] in you odbcinst.ini and NOT your odbc.ini file
CPTimeout = 600
Put this in your odbc.ini
这篇关于如何使用PHP-CGI PDO iSeries Access UnixODBC Connection连接池?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!