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