Files
doc-fr/features/connection-handling.xml
2021-09-24 04:13:47 +01:00

103 lines
4.4 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: dc0f955be2a10b707ae06f7da69f52fab24df3d1 Maintainer: yannick Status: ready -->
<!-- Reviewed: no -->
<chapter xml:id="features.connection-handling" xmlns="http://docbook.org/ns/docbook">
<title>Gestion des connexions</title>
<para>
Le statut des connexions est conservé en interne par PHP. Il y a
quatre états possibles :
<itemizedlist>
<listitem><simpara>0 - NORMAL (normal)</simpara></listitem>
<listitem><simpara>1 - ABORTED (annulé)</simpara></listitem>
<listitem><simpara>2 - TIMEOUT (périmé)</simpara></listitem>
<listitem><simpara>3 - ABORTED and TIMEOUT (annulé et périmé)</simpara></listitem>
</itemizedlist>
</para>
<simpara>
Lorsqu'un script PHP est en cours d'exécution, l'état est NORMAL.
Si le client distant se déconnecte, le statut devient ABORTED.
Une déconnexion du client distant est généralement causé par les utilisateurs
appuyant sur leurs bouton STOP. Si la durée maximale d'exécution de PHP est
dépassée, (voir <function>set_time_limit</function>), le script prend le
statut TIMEOUT.
</simpara>
<simpara>
Vous pouvez en outre décider si vous voulez que la
déconnexion d'un client provoque l'arrêt de votre
script. Il est parfois pratique que vos scripts continuent
à s'exécuter jusqu'à la fin, même si le client n'est plus là
pour recevoir les informations. Cependant, par défaut, le script
s'arrêtera dès que le client se déconnecte.
Ce comportement peut être modifié avec la directive
<option>ignore_user_abort</option> dans le fichier &php.ini; ou
bien avec la directive Apache <literal>php_value ignore_user_abort</literal>
du fichier Apache &httpd.conf; ou avec la fonction
<function>ignore_user_abort</function>. Si vous
ne demandez pas à PHP d'ignorer la déconnexion, et que
l'utilisateur se déconnecte, le script sera terminé. La
seule exception est si vous avez enregistré une fonction
de fermeture, avec <function>register_shutdown_function</function>.
Avec une telle fonction, lorsque l'utilisateur interrompt sa
requête, à la prochaine exécution du script,
PHP va s'apercevoir que le dernier script n'a pas été
terminé, et il va déclencher la fonction de fermeture.
Cette fonction sera aussi appelée à la fin du script,
si celui-ci se termine normalement. Pour pouvoir avoir un comportement
différent suivant l'état du script lors de sa finalisation,
vous pouvez exécutez des commandes spécifiques à
la déconnexion grâce à la commande
<function>connection_aborted</function>. Cette fonction retournera
&true; si la connexion a été annulée.
</simpara>
<simpara>
Votre script peut aussi être automatiquement interrompu
après une certaine durée.
Par défaut, le délai est de 30 secondes. Cette valeur
peut être changée en utilisant la directive PHP
<option>max_execution_time</option> dans le fichier
&php.ini; ou avec la directive
<literal>php_value max_execution_time</literal>, dans le fichier
Apache &httpd.conf; ou encore avec la fonction
<function>set_time_limit</function>.
Lorsque le délai expire, le script est terminé,
et comme pour la déconnexion du client, une fonction de
terminaison sera appelée. Dans cette fonction, vous
pouvez savoir si c'est le délai d'expiration qui a
causé la fin du script, en appelant la fonction
<function>connection_status</function>. Cette fonction
retournera <literal>2</literal> si le délai d'expiration a
été dépassé.
</simpara>
<simpara>
Une chose à noter est que les deux cas ABORTED et TIMEOUT
peuvent être appelés en même temps. Ceci est
possible si vous demandez à PHP d'ignorer les
déconnexions des utilisateurs. PHP va quand
même noter le fait que l'utilisateur s'est déconnecté,
mais le script va continuer. Puis, lorsqu'il atteint la limite de
temps, le script va expirer. À ce moment-là, la
fonction <function>connection_status</function>
retournera <literal>3</literal>.
</simpara>
</chapter>
<!-- 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:
-->