Llevo tiempo intentado cerrar las conexiones que se hacen a mi base de datos Oracle desde una aplicacion hecha en PHP4, lo que me genera que la Base de datos se sature de conexiones INACTIVAS, lo que genera que se realice un proceso manual para cerrarlas.
he estado modificando el codigo para eliminar las conexiones permanentes, pues crei que esa era la solucion, pero aun sigo con conexiones INACTIVAS aun despues de haber hecho el cierre del Cursor (ORA_CLOSE) y de la conexion (ORA_LOGOFF).
No puedo migrar la aplicacion a PHP5, por que esta en Produccion, y debo antes solucionar el problema de las sesiones, con el fin de que me quede tiempo para hacerla migracion.
rutina conexion
Código PHP:
function ConectarBD(&$Link, $user="")
{
// echo $ConsultaDB .'<br>';
putenv("NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1");
// parametros de Conexion
if ($user<>"")
{
$UsuarioDB=($UsuarioGeneridoDB]);
$ContrasenaDB= ($ClaveUser);
$DB='Nombre BD';
}
else
{
$UsuarioDB='xxxxx';
$ContrasenaDB='xxxxxxxx';
$DB='Nombre BD';
}
$Link = ora_logon($UsuarioDB.'@'.$DB, $ContrasenaDB) or die ('error'.ora_error());
}
Rutina de Insercion en DB
Código PHP:
function EscribirDB($Link, $Query)
{
putenv("NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1");
// Envio de Query
$Cursor = ora_open($Link) or die ('Could not connect.'.ora_error());
$v_parse = ora_parse($Cursor, $Query);// or die ('select '.ora_error());
$v_execute = ora_exec($Cursor);// or die ('Execution not made.'.ora_error());
// SE VERIFICAN SO HUBO ERRORES EN LA CONEXION
if (!$v_parse or !$v_execute)
{
if (!$v_parse)
{
$mensaje='select.';
}
elseif (!$v_execute)
{
$mensaje='Execution not made';
}
$e = ora_error();
echo htmlentities($e['message']);
ora_close($Cursor);
return (FALSE);
die();
}
ora_close($Cursor);
ora_logoff($Link);
return (TRUE);
}