Avatar billede wesso Juniormester
07. september 2005 - 11:55 Der er 1 kommentar

Hvordan ender man en 'Oracle Persistent Connection'?

Hej
Jeg har på det sidste konfigureret php4 og Apache så den kan virke fint med Oracle 10g database på windows.

Oracle 10g har Apache and PHP moduler indbygget. Det hele virker fint.

Jeg har brugt (ociplogon) i stedet for (OCILogon) i min php fil og det virker meget godt med at etablere mange child process connections.
Men problemet er at de kører for evigt og man kan ikke lave timeout på..

Er der en eller anden måde, hvor man kan slå child processes ihjel, hvis man definerer en timeout eller for eksempl at slå den process, der har været inaktiv i et stykke tid.

(PS: Hvorfor egentlig skal man have mange forbindelser til databasen, hvor de ikkehar været aktive i lang tid)

Er der en eller anden funktion i PHP, som kan gøre det her? kan I hjælpe mig med en script kode, der gøre det.

Her er hvordan min simple php script ser ud:

---------------------------------------------------------------

<?php

$db_conn = ociplogon( "king", "camilla", "PROD" );

$cmdstr = "select FIRSTNAME, LASTNAME from person where ID BETWEEN 14106 AND 14125";

$parsed = ociparse($db_conn, $cmdstr);
ociexecute($parsed);

$nrows = ocifetchstatement($parsed, $results);


echo "<html><head><title>Oracle PHP Test</title></head><body>";
echo "<center><h2>Oracle PHP Test</h2><br>";
echo "<table border=1 cellspacing='0' width='50%'>\n<tr>\n";
echo "<td><b>Name</b></td>\n<td><b>Salary</b></td>\n</tr>\n";

for ($i = 0; $i < $nrows; $i++ )
{
echo "<tr>\n";
echo "<td>" . $results["FIRSTNAME"][$i] . "</td>";
echo "<td>" . $results["LASTNAME"][$i] . "</td>";
//echo "<td>$ " . number_format($results["PERSONMASTER_ID"][$i], 2). "</td>";
echo "</tr>\n";
}

echo "<tr><td colspan='2'> Number of Rows: <B>$nrows</B></td></tr></table>";
echo "<br><em>Tillykke det virker!</em><br></center></body></html>\n";

ocilogoff($db_conn);

?>

---------------------------------------------------------------
Avatar billede coderdk Praktikant
07. september 2005 - 14:56 #1
Idéen med persistent connections er netop at man ikke skal lukke dem, åbne connections bliver genbrugt, når dette kan lade sig gøre. Så at lukke en persistent connection, går lidt imod princippet. Du kan dog muligvis bruge oci_close() / ociclose(), men er ikke helt sikker.
Mht. timeout, så kan du måske stille det på "klienten" eller på serveren...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester