ID: 30654 Updated by: [EMAIL PROTECTED] Reported By: [EMAIL PROTECTED] -Status: Bogus +Status: Open Bug Type: OCI8 related Operating System: Linux PHP Version: 4.3.9 New Comment:
I believe you are misunderstanding my words. I know you are fed up with a lot of bogus bugs but this one's not. The problem here is the recorded entry which created by OCI*P*Logon is deleted by the destructor of the connection created by OCI*N*Logon (in case both of them are created with same user, password, sid). I do not mean such a simple matter as you wrote... (although the cause of this problem is rather simple one:) Previous Comments: ------------------------------------------------------------------------ [2004-11-02 09:08:23] [EMAIL PROTECTED] Thank you for taking the time to write to us, but this is not a bug. Please double-check the documentation available at http://www.php.net/manual/ and the instructions on how to report a bug at http://bugs.php.net/how-to-report.php Only connections created with the persistent versoin of the logon function are recorded, just like with any other database extension. No bug here. ------------------------------------------------------------------------ [2004-11-02 04:30:46] [EMAIL PROTECTED] Description: ------------ OCIPLogon always creates new connection even if the process already has the connectoin with same user, same password and same sid, when it's called with OCINLogon. This happens when I called OCINLogon after OCIPLogon with same user, password and sid as OCIPLogon (please see also following "Reproduce code"). I'm not sure why but when php is trying to shutting down the resource created by OCINLogon, _oci_close_session() remove the entry in OCI(user). And then of course, _oci_open_session() called by OCIPLogon cannot find entry in OCI(uesr) and creates new connection next time... and the fix will be something like this? Index: oci8.c =================================================================== RCS file: /repository/php-src/ext/oci8/oci8.c,v retrieving revision 1.183.2.15 diff -r1.183.2.15 oci8.c 2479c2479 < if (! OCI(shutdown)) { --- > if (!OCI(shutdown) && !session->persistent) { Reproduce code: --------------- <?php $ora_user = "foo"; $ora_password = "bar"; $ora_sid = "blabla"; $conn_p = OCIPLogon($ora_user, $ora_password, $ora_sid); $conn_n = OCINLogon($ora_user, $ora_password, $ora_sid); ?> Expected result: ---------------- OCIPLogon does not create new connection more than once, and returns the connection created in previous execution. Actual result: -------------- OCIPLogon creates new connection everytime. You can confirm this in v$session table. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=30654&edit=1