![]() |
Login | Packages | Support | Bugs |
| Documentation: Downloads: |
[2007-11-12 17:24 UTC] david at acz dot org
[2007-11-12 18:22 UTC] tony2001
In my opinion it's clearly not PHP or OCI8 issue, but a problem that should be addressed by Oracle. There are in fact two bugs: 1) OCIPing() crashes older servers 2) OCIServerVersion() behaves weird. We obviously can provide dirty and half-working workarounds, but doing it on our side is simply wrong. [2007-11-12 22:22 UTC] david at acz dot org
OCIServerVersion() is not guaranteed to work as the code expects. In fact, it might not even call the server. Using OCIPing() is the right thing to do. We can provide a work-around for users with older servers, perhaps even as the default, but that shouldn't prevent using the correct method. http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14250/oci16msc0 07.htm#i540674 "This call returns the version string of the Oracle server. It can be in Unicode if the environment handle so determines." http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14250/oci16msc0 07.htm#BABIFFIC "OCIPing() simply makes a dummy round trip call to the server, that is, a dummy packet is sent to the server for response. OCIPing() returns after the round trip is completed." [2008-02-18 16:27 UTC] jeff_dafoe at harte-hanks dot com
We are having the same issue here. Looks like this was introduced in 1.2.0 when OCIPing was replaced with OCIServerVersion. It's nearly impossble to work around this issue, from php-space we don't have a way to force the bad connections to reconnect. Restarting the http process seems to be the only option. If OCIServerVersion can succeed without a logged-in connection, then OCIServerVersion can't be used to test the connection status. I agree with Tony that the problem is on the Oracle side, so PHP OCI8 should revert back to using OCIPing and the systems who cannot use OCIPing need to address the issue through Oracle. FWIW, we have been using the PHP OCI implementation for over 5 years, 3 of which were against Oracle 8i on HP-UX, and the PHP OCI library's use of OCIPing never caused our server to crash. [2008-02-18 16:32 UTC] tony2001
Please test OCI8 CVS version, a fix's been recently applied there. New release is expected to follow soon. [2009-01-21 20:10 UTC] jeff_dafoe at harte-hanks dot com
Rev 1.269.2.16.2.38.2.27 in CVS does fix this . Release 1.3.4 (rev 1.269.2.16.2.38.2.20) doesn't have the fix implemented, perhaps you were waiting for a response from me, which I failed to provide. [2009-01-21 20:27 UTC] christopher dot jones at oracle dot com
Jeff, the OCI8 1.3.4 file version you referenced calls OCIPing in php_oci_connection_ping(). [2009-01-22 15:21 UTC] jeff_dafoe at harte-hanks dot com
Yes, I see you are right. What we were actually seeing in 1.3.4 is some intermittent failure that we cannot reproduce in a single-process environment. We were able to reproduce it in the latest CVS version also, but not reliably, and only by "clicking furiously" inside our web app after disconnecting all sessions from Oracle. When it happens, it exhibits the same symptom set as originally reported in this issue, queries return "ORA-01012: not logged on". However, it's not a scenario that I'd feel comfortable reporting yet, with no reliable way to reproduce it. Looking over everything now, the thing that brought me back to this issue in the first place is that releases of PHP as recent as 5.2.8 is shipping with the older OCI 1.2.5 . Do you think that would that be something for which I should open an issue on the bugs.php.net system? [2009-01-22 17:44 UTC] christopher dot jones at oracle dot com
PHP 5.2 has been accepting critical fixes for some time. OCI8 1.3 introduced new functionality and won't be in any 5.2 release. |
||||||||||||||||||||||
|
PRIVACY POLICY | CREDITS |
|
|
Copyright © 2001-2008 The PHP Group All rights reserved. |
Last updated: Fri Aug 07 10:22:05 2009 UTC Bandwidth and hardware provided by: pair Networks |