Hi,
I'm new in PHP, but I have already written a lot of pages using Perl. Now I
would to rewrite some modules of my web application in PHP but I have a problem
with persistent connections to Oracle databases.
My understanding of persistent connections was that using the ociplogon
function a connection would be opened to the database and all other connections
to the same database (with the same username and password) would use the first
one previously opened, which mean I would have only 1 connection to the
database. But in fact it is not what is happening, every time I submit the page
to the same database a new connection is opened. Which is a little bit annoying
if I submit this one 100 times (100 connections at the end).
How could I manage persistent connections using ociplogon? Is there some
parameters to add in the http.conf file. I use PHP5, apache 1.3.28, and for
Oracle 8i and 9i.
Below is one page of my application. I hope that someone will be able to help
me.
<?php header ("Cache-Control:no-cache");
$user_name = $HTTP_GET_VARS["user_name"];
$atod_password = $HTTP_GET_VARS["password"];
$type = $HTTP_GET_VARS["type"];
$owner = $HTTP_GET_VARS["owner"];
$db_name = $HTTP_GET_VARS["database_name"];
$db_conn = ociplogon ( $user_name, $atod_password, "ATOD" );
$cmdstr = "select password from ATOD.DATABASE_INFO where " .
"database_name = '" . $db_name . "'";
$parsed = ociparse ($db_conn, $cmdstr);
ociexecute ($parsed);
ocifetch ($parsed);
$db_password = ociresult($parsed, PASSWORD);
function fct_invalid_objects ($db, $psswd = "MANAGER", $owner, $type)
{
$dbh = ociplogon ( "SYSTEM", $psswd, $db );
$sqlstr = "SELECT object_name, object_id, " .
"TO_CHAR(created, 'dd/mm/yyyy hh24:mi:ss') AS CREATED, " .
"TO_CHAR(last_ddl_time, 'dd/mm/yyyy hh24:mi:ss') AS LAST_DDL_TIME " .
"FROM dba_objects WHERE owner = '" . $owner . "' AND " .
"object_type = '" . $type . "' AND status = 'INVALID' " .
"ORDER BY 2, 1";
$parsed = ociparse ($dbh, $sqlstr);
ociexecute ($parsed);
$nrows = ocifetchstatement($parsed, $results);
for ( $i = 0; $i < $nrows; $i++ )
{
$objects .= "<tr>\n";
$objects .= "<td>" . $results["OBJECT_NAME"][$i] . "</td>";
$objects .= "<td>" . $results["OBJECT_ID"][$i] . "</td>";
$objects .= "<td>" . $results["CREATED"][$i] . "</td>";
$objects .= "<td>" . $results["LAST_DDL_TIME"][$i] . "</td>";
$objects .= "</tr>\n";
}
return $objects;
}
?>
<HTML>
<HEAD>
<title>Web Administration Tool for ORACLE Databases</title>
</HEAD>
<BODY background="http://esorclupg/backgrnd.gif" link=darkblue alink=red>
<H2 align=center>Invalid <?php echo $type ?> for user
<?php echo $owner ?> in <?php echo $db_name ?>
</H2>
<TABLE align=center border=5 cols=5 bordercolordark=red bordercolorlight=pink
cellspacing=5 cellpadding=3 bgcolor=lightblue rules=none frame=box>
<TR>
<TH>Object name</TH>
<TH>Object ID</TH>
<TH>Created</TH>
<TH>Last DDL Time</TH>
</TR>
<?php echo fct_invalid_objects($db_name, $db_password, $owner, $type) ?>
</TABLE>
</BODY>
</HTML>
Regards
Patrick David
---------------------------------
ALL-NEW Yahoo! Messenger - all new features - even more fun!