<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/features.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'fr',
  ),
  'this' => 
  array (
    0 => 'features.connection-handling.php',
    1 => 'Gestion des connexions',
    2 => 'Gestion des connexions',
  ),
  'up' => 
  array (
    0 => 'features.php',
    1 => 'Caract&eacute;ristiques',
  ),
  'prev' => 
  array (
    0 => 'features.remote-files.php',
    1 => 'Utilisation des fichiers &agrave; distance',
  ),
  'next' => 
  array (
    0 => 'features.persistent-connections.php',
    1 => 'Connexions persistantes aux bases de donn&eacute;es',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'fr',
    'path' => 'features/connection-handling.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="features.connection-handling" class="chapter">
 <h1 class="title">Gestion des connexions</h1>

 <p class="para">
  Le statut des connexions est conservé en interne par PHP. Il y a
  quatre états possibles :
  <ul class="itemizedlist">
   <li class="listitem"><span class="simpara">0 - NORMAL (normal)</span></li>
   <li class="listitem"><span class="simpara">1 - ABORTED (annulé)</span></li>
   <li class="listitem"><span class="simpara">2 - TIMEOUT (périmé)</span></li>
   <li class="listitem"><span class="simpara">3 - ABORTED and TIMEOUT (annulé et périmé)</span></li>
  </ul>
 </p>
 <p class="simpara">
  Lorsqu&#039;un script PHP est en cours d&#039;exécution, l&#039;é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ée par les utilisateurs
  appuyant sur leur bouton STOP. Si la durée maximale d&#039;exécution de PHP est
  dépassée, (voir <span class="function"><a href="function.set-time-limit.php" class="function">set_time_limit()</a></span>), le script prend le
  statut TIMEOUT.
 </p>
 <p class="simpara">
  Il est en outre possible de décider si la
  déconnexion d&#039;un client provoque l&#039;arrêt du
  script. Il est parfois pratique que les scripts continuent
  à s&#039;exécuter jusqu&#039;à la fin, même si le client n&#039;est plus là
  pour recevoir les informations. Cependant, par défaut, le script
  s&#039;arrêtera dès que le client se déconnecte.
  Ce comportement peut être modifié avec la directive
  <strong class="option unknown">ignore_user_abort</strong> dans le fichier <var class="filename">php.ini</var> ou
  bien avec la directive Apache <code class="literal">php_value ignore_user_abort</code>
  du fichier Apache <var class="filename">httpd.conf</var> ou avec la fonction
  <span class="function"><a href="function.ignore-user-abort.php" class="function">ignore_user_abort()</a></span>. Si PHP
  n&#039;est pas configuré pour ignorer la déconnexion, et que
  l&#039;utilisateur se déconnecte, le script sera terminé. La
  seule exception est si une fonction a été enregistrée
  de fermeture, avec <span class="function"><a href="function.register-shutdown-function.php" class="function">register_shutdown_function()</a></span>.
  Avec une telle fonction, lorsque l&#039;utilisateur interrompt sa
  requête, à la prochaine exécution du script,
  PHP va s&#039;apercevoir que le dernier script n&#039;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&#039;état du script lors de sa finalisation,
  il est possible d&#039;exécuter des commandes spécifiques à
  la déconnexion grâce à la commande
  <span class="function"><a href="function.connection-aborted.php" class="function">connection_aborted()</a></span>. Cette fonction retournera
  <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong> si la connexion a été annulée.
 </p>
 <p class="simpara">
  Le 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
  <strong class="option unknown">max_execution_time</strong> dans le fichier
  <var class="filename">php.ini</var> ou avec la directive
  <code class="literal">php_value max_execution_time</code>, dans le fichier
  Apache <var class="filename">httpd.conf</var> ou encore avec la fonction
  <span class="function"><a href="function.set-time-limit.php" class="function">set_time_limit()</a></span>.
  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, il est
  possible de savoir si c&#039;est le délai d&#039;expiration qui a
  causé la fin du script, en appelant la fonction
  <span class="function"><a href="function.connection-status.php" class="function">connection_status()</a></span>. Cette fonction
  retournera 2 si le délai d&#039;expiration a
  été dépassé.
 </p>
 <p class="simpara">
  Une chose à noter est que les deux cas ABORTED et TIMEOUT
  peuvent être appelés en même temps. Ceci est
  possible si l&#039;on demande à PHP d&#039;ignorer les
  déconnexions des utilisateurs. PHP va quand
  même noter le fait que l&#039;utilisateur s&#039;est déconnecté,
  mais le script va continuer. Puis, lorsqu&#039;il atteint la limite de
  temps, le script va expirer. À ce moment-là, la
  fonction <span class="function"><a href="function.connection-status.php" class="function">connection_status()</a></span>
  retournera 3.
 </p>
</div>
<?php manual_footer($setup); ?>