如何使用PHP-CGI PDO iSeries Access UnixODBC Connection连接池? [英] How do I get connection pooling working on a PHP-CGI PDO iSeries Access UnixODBC Connection?

查看:238
本文介绍了如何使用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 
  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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆