#22532 [Opn->Fbk]: after using oci colections the httpd process keeps the memory allocated
| From: | sniper@php.net | Date: | Wed, 05 Mar 2003 01:52:34 +0000 |
| Subject: | #22532 [Opn->Fbk]: after using oci colections the httpd process keeps the memory allocated | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-34824@lists.php.net to get a copy of this message | ||
ID: 22532
Updated by: sniper@php.net
Reported By: adri_l at gmx dot net
-Status: Open
+Status: Feedback
Bug Type: OCI8 related
Operating System: Suse Linux 8.1
PHP Version: 4.3.1
New Comment:
Please try using this CVS snapshot:
http://snaps.php.net/php4-STABLE-latest.tar.gz
For Windows:
http://snaps.php.net/win32/php4-win32-STABLE-latest.zip
Previous Comments:
------------------------------------------------------------------------
[2003-03-04 02:12:36] adri_l at gmx dot net
Hi.
I am testing some ways to insert big amounts of data
in a oracle database and i encountered the following problem.
During the script execution the memory usage of httpd daemon grows a
lot and even after the script is ended the httpd process keeps the
memory allocated. After two runs of the script the httpd process is
using 28.7% of 512 MB of RAM.
I'm using PHP 4.3.1, Oracle 9.2.1.0.1 and apache 1.3.27.
Hope you can help.
The oracle table in which the data is inserted has the following
structure:
SQL> describe adrian_test;
Name Null? Type
----------- -------- -----------------
NAME VARCHAR2(255)
NR NUMBER
VAL NUMBER
The script is:
<?
OCIInternalDebug (1);
function bulk_test($link,$nr_query){
// Create three types number, float, text
$my_q="create or replace type mname as varray($nr_query) of
varchar(255)";
$my_res=OCIParse($link,$my_q);
OCIExecute($my_res);
OCIFreeStatement($my_res);
$my_q="create or replace type mnr as varray($nr_query) of number";
$my_res=OCIParse($link,$my_q);
OCIExecute($my_res);
OCIFreeStatement($my_res);
$my_q="create or replace type mval as varray($nr_query) of number";
$my_res=OCIParse($link,$my_q);
OCIExecute($my_res);
OCIFreeStatement($my_res);
//Create collections
$cname=OCINewCollection($link,"MNAME");
$cnr=OCINewCollection($link,"MNR");
$cval=OCINewCollection($link,"MVAL");
//Create bulk data
for($i=0;$i<$nr_query;$i++){
$cname->append("Nume".$i);
$cval->append($i);
$cnr->append($i+100);
};
//Create the PLSQL query
$mbstr="begin forall i in 1..".$nr_query." insert into adrian_test
(name,nr,val) values (:vname(i),:vnr(i),:vval(i));end;";
$mbq=OCIParse($link,$mbstr);
//Bind collections
OCIBindByName($mbq,":vname",$cname,sizeof($cname),OCI_B_SQLT_NTY);
OCIBindByName($mbq,":vnr",$cnr,sizeof($cnr),OCI_B_SQLT_NTY);
OCIBindByName($mbq,":vval",$cval,sizeof($cval),OCI_B_SQLT_NTY);
//Execute Query
OCIExecute($mbq);
OCIFreeStatement($mbq);
//Free Collections
$cname->free();
$cnr->free();
$cval->free();
//Drop types
$dtque=OCIParse($link,"drop type mname");
OCIExecute($dtque);
OCIFreeStatement($dtque);
$dtque=OCIParse($link,"drop type mnr");
OCIExecute($dtque);
OCIFreeStatement($dtque);
$dtque=OCIParse($link,"drop type mval");
OCIExecute($dtque);
OCIFreeStatement($dtque);
};
$linkid = OCINLogon("scott", "tiger");
bulk_test($linkid,500000);
?>
I hope this can be solved easily and that i'm not reporting false bugs
or things like this.
Best regards,
Adrian CIocildau
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=22532&edit=1