Rechercher une fonction PHP

oci_close

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

oci_closeFerme une connexion Oracle

Description

oci_close ( resource $connection ) : bool

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.

Retour à la première page de Manuel PHP  Table des matières Haut

Liste de paramètres

connection

Un identifiant de connexion Oracle, retourné par la fonction oci_connect(), oci_pconnect(), ou oci_new_connect().

Retour à la première page de Manuel PHP  Table des matières Haut

Valeurs de retour

Cette fonction retourne TRUE en cas de succès ou FALSE si une erreur survient.

Retour à la première page de Manuel PHP  Table des matières Haut

Exemples

Exemple #1 Fermeture d'une connexion

Les ressources associées avec une connexion doivent être fermée afin d'assurer à la base de données sous sous-jacente la fin des opération et ainsi, y libérer les ressources.

<?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

L'identifiant interne comptant les connexions doit valoir zéro pour pouvoir fermer la 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');  // 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

Lorsque des identifiants de base de données sont réutilisés, toutes les connexions doivent être fermées avant que la connexion à la base de données sous-jacente le soit réellement.

<?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

Lorsque toutes les variables référençant une connexion sortent du contexte et sont libérées par PHP, une annulation survient (si nécessaire) et la connexion sous-jacente à la base de données est fermée.

<?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($stidOCI_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"

?>

Retour à la première page de Manuel PHP  Table des matières Haut

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().

Retour à la première page de Manuel PHP  Table des matières Haut

Voir aussi

Rechercher une fonction PHP

Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-oci-close.html

L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.

Références

  1. Consulter le document html Langue du document :fr Manuel PHP : http://php.net

Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.

Table des matières Haut