To further study how to optimize PHP DB2 connection, I looked into PHP DB2 extension again recently. I want to find out the best way to use persist connection with considering about ODP reusing.
After reading
the source code of PHP DB2 extension, I noticed that there is no limitation of maximum number of pconnection from PHP DB2 extension. In the C code, we can see only UserID, password, and Database name are used to compose hash code. You locate the place by search following code in the source code.
sprintf(hKey, "__db2_%s.%s.%s", uid, database, password);
This is interesting as it implies that I should avoid allowing huge number of different user profile to be used inside one Zend Server.
I am thinking that we will have difficult to reuse ODP when only userId, password, and database name are used to generate hash code for pconnect because ODP will be reused based on not only user name and password. For example, I think the ODP will be rebuilt if different requests use same User Name and password but different library list to get pconnection. PHP Db2 extension allows us to pass in library list. So, if developers, for some reason, happen to pass in different library list to run query on same library, the ODP will be rebuilt for sure.
Some other things I do not have answers are,
1) What happens to pconnection if its associated QSQSRVR job is terminated for some reason?
2) I saw something about ODBC version occur in C code. Does PHP DB2 extension works with ODBC in any way?