oci_close
(PHP 5, PECL OCI8 >= 1.1.0)
oci_close — Ferme une connexion Oracle
Description
$connection
)
Ferme une connexion connection Oracle.
La connexion sera fermée si aucune ressource ne l'utilise et si
elle a été créée avec la fonction oci_connect()
ou la fonction oci_new_connect().
Il est recommandé de fermer les connexions qui ne vous sont plus nécessaires, rendant ainsi plus de ressources de disponible pour les autres utilisateurs.
Liste de paramètres
-
connection -
Un identifiant de connexion Oracle, retourné par la fonction oci_connect(), oci_pconnect(), ou oci_new_connect().
Valeurs de retour
Cette fonction retourne TRUE en cas de
succès ou FALSE si une erreur survient.
Exemples
Exemple #1 Fermeture d'une connexion
<?php
$conn = oci_connect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
$e = oci_error();
trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}
$stid = oci_parse($conn, 'SELECT * FROM departments');
$r = oci_execute($stid);
oci_fetch_all($stid, $res);
var_dump($res);
// Libération de l'identifiant de requête lors de la fermeture de la connexion
oci_free_statement($stid);
oci_close($conn);
?>Exemple #2 Les connexions à la base de données sont fermées à partir du moment où les références le sont
<?php
$conn = oci_connect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
$e = oci_error();
trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}
$stid = oci_parse($conn, 'SELECT * FROM departments'); // ceci incrémente le compteur interne $conn
oci_execute($stid);
oci_fetch_all($stid, $res);
var_dump($res);
oci_close($conn);
// $conn n'est plus utilisable dans le script mais la connexion sous-jacente à
// la base de données est toujours ouverte tant que $stid n'est pas libéré.
var_dump($conn); // affiche NULL
// Pendant que PHP attend, le fait d'interroger la vue V$SESSION d'Oracle
// dans un terminal montrera qu'un utilisateur est toujours connecté.
sleep(10);
// Lorsque $stid est libéré, la connexion à la base de données sera physiquement fermée
oci_free_statement($stid);
// Pendant que PHP attend, le fait d'interroger la vue V$SESSION d'Oracle
// dans un terminal montrera que l'utilisateur s'est déconnecté.
sleep(10);
?>Exemple #3 Fermeture d'un connexion ouverte plus d'une fois
<?php
$conn1 = oci_connect('hr', 'welcome', 'localhost/XE');
// L'utilisation des mêmes identifiants réutilise la même connexion à la base de données sous-jacente.
// Toutes les modifications non validées effectuées sur $conn1 seront visibles sur $conn2.
$conn2 = oci_connect('hr', 'welcome', 'localhost/XE');
// Pendant que PHP attend, le fait d'interroger la vue V$SESSION d'Oracle
// dans un terminal montrera qu'un seul utilisateur est connecté.
sleep(10);
oci_close($conn1); // ne ferme pas la connexion à la base de données sous-jacente
var_dump($conn1); // affiche NULL car la variable $conn1 n'est plus utilisable
var_dump($conn2); // affiche que $conn2 est toujours une ressource de connexion valide
?>Exemple #4 Les connexions sont fermées lorsque les variables sortent du contexte
<?php
function myfunc() {
$conn = oci_connect('hr', 'hrpwd', 'localhost/XE');
if (!$conn) {
$e = oci_error();
trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}
$stid = oci_parse($conn, 'UPDATE mytab SET id = 100');
oci_execute($stid, OCI_NO_AUTO_COMMIT);
return "Finished";
}
$r = myfunc();
// À ce moment, une annulation survient et la connexion sous-jacente à la base de données est fermée.
print $r; // affiche la valeur de retour de la fonction "Finished"
?>Notes
Note:
Les variables ayant une dépendance à l'identifiant de connexion, comme les identifiants de requêtes retournés par la fonction oci_parse(), doivent être libérées avant de tenter de fermer la connexion sous-jacente à la base de données.
Note:
Avant la version PHP 5.1.2 (PECL OCI8 1.1) oci_close() ne fermait pas réellement la connexion Oracle. Dans les versions plus récentes, cette fonction ferme correctement la connexion Oracle. Utilisez l'option oci8.old_oci_close_semantics pour revenir à l'ancien comportement de cette fonction.
Note:
La fonction oci_close() ne ferme pas les connexions sous-jacentes à la base de données créées par la fonction oci_pconnect().
Note:
Dans les version de PHP avant 5.0.0, vous devez utiliser la fonction ocilogoff() à la place. Le nom de l'ancienne fonction peut toujours être utilisé dans les versions courantes, malgré le fait qu'il est maintenant obsolète et que nous ne vous le recommandons pas.
Voir aussi
- oci_connect() - Établit une connexion avec un serveur Oracle
- oci_free_statement() - Libère toutes les ressources réservées par un résultat Oracle
