Как заставить работать пул соединений с соединением PHP-CGI PDO iSeries Access UnixODBC?

Я пытаюсь заставить работать пул соединений с использованием PHP / PDO с драйвером UnixODBC под названием iSeries Access для Linux.

Я не устанавливаю PDO :: ATTR_PERSISTENT в моем конструкторе PDO, поскольку я хочу использовать пул, а не постоянство (я нахожусь в среде 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

person John Lee    schedule 18.02.2015    source источник
comment
Хорошо, раз здесь нет вопросов, и похоже, что вы знаете, что вам нужно делать, зачем мы вам нужны?   -  person RiggsFolly    schedule 18.02.2015
comment
RiggsFolly, я пересмотрел вопрос.   -  person John Lee    schedule 18.02.2015
comment
И я тоже пересмотрел свое мнение об этом.   -  person RiggsFolly    schedule 18.02.2015
comment
Несмотря на то, что я обновил файлы OBDC в соответствии со спецификацией, запросы новых страниц продолжают создавать новые сообщения о соединении в DB2, как если бы старые соединения не использовались повторно и не объединялись. В документации говорится, что основная причина использования пула - избегать этого подключения к службе (то, чем создается сообщение), поскольку это самая высокая стоимость производительности.   -  person John Lee    schedule 18.02.2015
comment
У меня тоже есть аналогичная проблема (без объединения) с использованием unixODBC с DB2 из Python (с использованием pyodbc). У меня эта проблема только с DB2; Начинаю задумываться, не проблема ли это в их драйверах.   -  person Justin    schedule 11.11.2015


Ответы (2)


Увеличение количества пулов соединений будет происходить всегда.

person gzw13999    schedule 05.03.2015
comment
Я не уверен, что понимаю ваш ответ. Я попытался установить максимальный размер пула и минимальный размер пула. Вы говорите, что мне нужно увеличить размер пула соединений, или вы говорите, что сообщения всегда будут отправляться? - person John Lee; 10.03.2015
comment
Что ты хочешь этим сказать? Есть ли где-нибудь ответ в ваших словах? - person Sean256; 24.11.2016

Pooling         = Yes

Это должно быть под [ODBC] в вашем odbcinst.ini, а НЕ в вашем файле odbc.ini.

CPTimeout       = 600

Поместите это в свой odbc.ini

person Sean256    schedule 24.11.2016