#12518 [Com]: ocifreestatment doesn't free the Oracle cursor and so you run out of cursors
| From: | special-advanced1424 at hotmail dot com | Date: | Tue, 20 Jul 2004 15:12:19 +0000 |
| Subject: | #12518 [Com]: ocifreestatment doesn't free the Oracle cursor and so you run out of cursors | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-63163@lists.php.net to get a copy of this message | ||
ID: 12518
Comment by: special-advanced1424 at hotmail dot com
Reported By: derek at innovyx dot com
Status: Bogus
Bug Type: OCI8 related
Operating System: Linux
PHP Version: 4.0.6
New Comment:
<a href=http://advanced-averagespe.da.ru>advanced
special</a>
Previous Comments:
------------------------------------------------------------------------
[2001-08-06 13:24:51] sniper@php.net
user error
------------------------------------------------------------------------
[2001-08-06 13:23:13] derek at innovyx dot com
With the help of v$open_cursor I've tracked down the problem and it was
a case of user error, my apologies for having taken up your time.
------------------------------------------------------------------------
[2001-08-06 12:59:04] derek at innovyx dot com
I have a long-running PHP script that eventually comes up with:
Failed execution, error: ORA-00604: error occurred at recursive SQL
level 2 ORA-01000: maximum open cursors exceeded.
I don't explicitly use any cursors in this script btw. In addition I
found (via a web search) that someone else has been experiencing the
same thing.
However, in response to your request I've been trying to build a test
script to leak cursors and reproduce the problem, unfortunately, thus
far, even deliberately leaking cursors is not producing it. :(
------------------------------------------------------------------------
[2001-08-01 16:18:03] thies@php.net
what makes you belive it doesn't work?
please send me a short testcase that shows leakage of
resources.
------------------------------------------------------------------------
[2001-08-01 13:20:01] derek at innovyx dot com
the ocifreestatment function doesn't actually free the Oracle cursor,
these are only freed when the script exits.
While this isn't a problem when using PHP as a web page it is a problem
if you have a command line script that has to perform thousands (or tens
of thousands) of queries eventually the open_cursors limit is exceeded
and all further queries fail.
The same appears to be true with connections.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=12518&edit=1