mirror of
https://github.com/macintoshplus/doc-fr.git
synced 2026-04-25 17:48:05 +02:00
254 lines
7.6 KiB
XML
254 lines
7.6 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!-- $Revision$ -->
|
|
<!-- EN-Revision: ed6de1ae20ce16c0c7be0b3fef282b6065bebfac Maintainer: yannick Status: ready -->
|
|
<!-- Reviewed: yes -->
|
|
|
|
<refentry xml:id="function.oci-close" xmlns="http://docbook.org/ns/docbook">
|
|
<refnamediv>
|
|
<refname>oci_close</refname>
|
|
<refpurpose>Ferme une connexion Oracle</refpurpose>
|
|
</refnamediv>
|
|
|
|
<refsect1 role="description">
|
|
&reftitle.description;
|
|
<methodsynopsis>
|
|
<type class="union"><type>bool</type><type>null</type></type><methodname>oci_close</methodname>
|
|
<methodparam><type>resource</type><parameter>connection</parameter></methodparam>
|
|
</methodsynopsis>
|
|
<para>
|
|
Ferme une connexion <parameter>connection</parameter> Oracle.
|
|
La connexion sera fermée si aucune ressource ne l'utilise et si
|
|
elle a été créée avec la fonction <function>oci_connect</function>
|
|
ou la fonction <function>oci_new_connect</function>.
|
|
</para>
|
|
<para>
|
|
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.
|
|
</para>
|
|
</refsect1>
|
|
|
|
<refsect1 role="parameters">
|
|
&reftitle.parameters;
|
|
<para>
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><parameter>connection</parameter></term>
|
|
<listitem>
|
|
<para>
|
|
Un identifiant de connexion Oracle, retourné par la fonction
|
|
<function>oci_connect</function>, <function>oci_pconnect</function>,
|
|
ou <function>oci_new_connect</function>.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</para>
|
|
</refsect1>
|
|
|
|
<refsect1 role="returnvalues">
|
|
&reftitle.returnvalues;
|
|
<para>
|
|
Retourne &null; quand <link linkend="ini.oci8.old-oci-close-semantics">oci8.old_oci_close_semantics</link>
|
|
est activé, &true; sinon.
|
|
</para>
|
|
</refsect1>
|
|
|
|
<refsect1 role="examples">
|
|
&reftitle.examples;
|
|
<example>
|
|
<title>Fermeture d'une connexion</title>
|
|
<para>
|
|
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.
|
|
</para>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?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);
|
|
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
|
|
<example>
|
|
<title>Les connexions à la base de données sont fermées à partir du moment où les références le sont</title>
|
|
<para>
|
|
L'identifiant interne comptant les connexions doit valoir zéro
|
|
pour pouvoir fermer la connexion.
|
|
</para>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?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);
|
|
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
|
|
<example>
|
|
<title>Fermeture d'un connexion ouverte plus d'une fois</title>
|
|
<para>
|
|
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.
|
|
</para>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?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
|
|
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
|
|
<example>
|
|
<title>Les connexions sont fermées lorsque les variables sortent du contexte</title>
|
|
<para>
|
|
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.
|
|
</para>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?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"
|
|
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</refsect1>
|
|
|
|
<refsect1 role="notes">
|
|
&reftitle.notes;
|
|
<note>
|
|
<para>
|
|
Les variables ayant une dépendance à l'identifiant de connexion,
|
|
comme les identifiants de requêtes retournés par la fonction
|
|
<function>oci_parse</function>, doivent être libérées avant de
|
|
tenter de fermer la connexion sous-jacente à la base de données.
|
|
</para>
|
|
</note>
|
|
<note>
|
|
<para>
|
|
Avant la version PHP 5.1.2 (PECL OCI8
|
|
1.1) <function>oci_close</function> ne fermait pas réellement la connexion Oracle.
|
|
Dans les versions plus récentes, cette fonction ferme correctement la connexion Oracle.
|
|
Utilisez l'option <link linkend="ini.oci8.old-oci-close-semantics">oci8.old_oci_close_semantics</link>
|
|
pour revenir à l'ancien comportement de cette fonction.
|
|
</para>
|
|
</note>
|
|
<note>
|
|
<para>
|
|
La fonction <function>oci_close</function> ne ferme pas les connexions sous-jacentes
|
|
à la base de données créées par la fonction <function>oci_pconnect</function>.
|
|
</para>
|
|
</note>
|
|
</refsect1>
|
|
|
|
<refsect1 role="seealso">
|
|
&reftitle.seealso;
|
|
<para>
|
|
<simplelist>
|
|
<member><function>oci_connect</function></member>
|
|
<member><function>oci_free_statement</function></member>
|
|
</simplelist>
|
|
</para>
|
|
</refsect1>
|
|
|
|
</refentry>
|
|
<!-- Keep this comment at the end of the file
|
|
Local variables:
|
|
mode: sgml
|
|
sgml-omittag:t
|
|
sgml-shorttag:t
|
|
sgml-minimize-attributes:nil
|
|
sgml-always-quote-attributes:t
|
|
sgml-indent-step:1
|
|
sgml-indent-data:t
|
|
indent-tabs-mode:nil
|
|
sgml-parent-document:nil
|
|
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
|
|
sgml-exposed-tags:nil
|
|
sgml-local-catalogs:nil
|
|
sgml-local-ecat-files:nil
|
|
End:
|
|
vim600: syn=xml fen fdm=syntax fdl=2 si
|
|
vim: et tw=78 syn=sgml
|
|
vi: ts=1 sw=1
|
|
-->
|