httpd keep the memory allocated even after the script ends

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi.

I am testing some ways to insert bin 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 wich the data is inserted ha the following structure:

SQL> describe adrian_test;
Name Null? Type
----------------------------------------- -------- ----------------------------
NAME VARCHAR2(255)
NR NUMBER
VAL NUMBER


the script is attached:

<?
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);
if(!OCIFreeStatement($my_res)){
echo "\n<p> Problems to free the statement mname<p>\n";
return 5;
};

$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);

echo "\n<p> Before free :".$cname->size()."<p>\n";

//Free Collections
$cname->free();
$cnr->free();
$cval->free();


//Drop types
$dtque=OCIParse($link,"drop type mname");
if(!OCIExecute($dtque)){
echo("Problems with dropping MNAME type <p>");
return 5;
};
OCIFreeStatement($dtque);

$dtque=OCIParse($link,"drop type mnr");
OCIExecute($dtque);
OCIFreeStatement($dtque);

$dtque=OCIParse($link,"drop type mval");
OCIExecute($dtque);
OCIFreeStatement($dtque);

};



function query_num($link){
$qres=OCIParse($link, "select count(*) from adrian_test");
$retv=OCIExecute($qres,OCI_COMMIT_ON_SUCCESS);
OCIFetchInto($qres, $rdata, OCI_RETURN_NULLS);
OCIFreeStatement($qres);
return $rdata[0];

};

function trash_all($link){
$qres=OCIParse($link, "delete from adrian_test");
OCIExecute($qres,OCI_COMMIT_ON_SUCCESS);
OCIFreeStatement($qres);
};


$linkid = OCINLogon("user", "pass", "db");

if (!$linkid) {
echo "Connection failed";
echo "Error Message: [" . OCIError($linkid) . "]";
exit;
};

trash_all($linkid);


for($cc=0;$cc<20;$cc++){
echo "\n\n\n<p>-----------------------------TEST $cc START-------------------------------------------------<p>\n";
bulk_test($linkid,100000);
if(query_num($linkid)!=100000) echo "\n<p> ------------------------- Error in step $cc ----------------------------------<p>\n";
trash_all($linkid);
flush();
OCICommit($linkid);
echo "\n\n\n<p>-----------------------------TEST $cc END-------------------------------------------------<p>\n";
};

OciLogOff($linkid);
?>



--
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [PHP Users]     [Postgresql Discussion]     [Kernel Newbies]     [Postgresql]     [Yosemite News]

  Powered by Linux