#30654 [Opn->Bgs]: OCIPLogon always creates new connection with OCINLogon
| From: | derick@php.net | Date: | Tue, 02 Nov 2004 08:08:28 +0000 |
| Subject: | #30654 [Opn->Bgs]: OCIPLogon always creates new connection with OCINLogon | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-68609@lists.php.net to get a copy of this message | ||
ID: 30654
Updated by: derick@php.net
Reported By: fujimoto@php.net
-Status: Open
+Status: Bogus
Bug Type: OCI8 related
Operating System: Linux
PHP Version: 4.3.9
New Comment:
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.
Previous Comments:
------------------------------------------------------------------------
[2004-11-02 04:30:46] fujimoto@php.net
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