<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/fpm.observability.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'fr',
  ),
  'this' => 
  array (
    0 => 'fpm.status.php',
    1 => 'Page d\'&eacute;tat',
    2 => 'Page d\'&eacute;tat',
  ),
  'up' => 
  array (
    0 => 'fpm.observability.php',
    1 => 'Observabilit&eacute;',
  ),
  'prev' => 
  array (
    0 => 'fpm.observability.php',
    1 => 'Observabilit&eacute;',
  ),
  'next' => 
  array (
    0 => 'ref.fpm.php',
    1 => 'Fonctions FPM',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'fr',
    'path' => 'reference/fpm/status.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="fpm.status" class="sect1">
 <h2 class="title">Page d&#039;état</h2>

 <p class="simpara">
  Cette page fournit des informations sur la configuration et le contenu de la page d&#039;état du FPM. Voir aussi
  <span class="function"><a href="function.fpm-get-status.php" class="function">fpm_get_status()</a></span>.
 </p>

 <div class="sect2" id="fpm.status.configuration">
  <h3 class="title">Configuration</h3>

  <p class="simpara">
   La page d&#039;état de FPM peut être activée en définissant le paramètre
   <a href="install.fpm.configuration.php#pm.status-path" class="link">pm.status_path</a>
   dans la configuration du pool FPM.
  </p>

  <div class="caution"><strong class="caution">Attention</strong>
   <p class="simpara">
    Pour des raisons de sécurité, la page d&#039;état du FPM devrait être limitée aux requêtes internes ou aux IP de clients
    connues, car la page révèle les URLs des requêtes et des informations sur les ressources disponibles.
   </p>
  </div>

  <p class="simpara">
   Selon la configuration du serveur web, il peut être nécessaire de configurer le serveur web pour
   autoriser les requêtes directement vers ce chemin, en contournant les scripts PHP. Un exemple de configuration
   pour Apache avec FPM écoutant sur UDS et <code class="literal">pm.status_path</code> fixé à
   <code class="literal">/fpm-status</code>:
  </p>

  <div class="informalexample">
   <div class="example-contents">
    <div class="apache-confcode"><pre class="apache-confcode">&lt;LocationMatch &quot;/fpm-status&quot;&gt;
 Require local
 ProxyPass &quot;unix:/var/run/php-fpm.sock|fcgi://localhost/&quot;
&lt;/LocationMatch&gt;</pre>
</div>
   </div>

  </div>

  <p class="simpara">
   Après le rechargement ou le redémarrage de FPM et du serveur web, la page d&#039;état sera accessible à partir
   du navigateur (à condition que la requête provienne d&#039;une adresse IP autorisée si la restriction d&#039;IP a été
   configurée).
  </p>
 </div>

 <div class="sect2" id="fpm.status.parameters">
  <h3 class="title">Paramètres de la requête</h3>

  <p class="simpara">
   Le format de la page d&#039;état peut être modifié en spécifiant l&#039;un des paramètres de requête
   suivants :
  </p>

  <ul class="simplelist">
   <li><code class="literal">html</code></li>
   <li><code class="literal">json</code></li>
   <li><code class="literal">openmetrics</code></li>
   <li><code class="literal">xml</code></li>
  </ul>

  <p class="simpara">
   Des informations supplémentaires peuvent également être retournées en utilisant le paramètre de requête <code class="literal">full</code>.
  </p>

  <p class="simpara">
   Exemple d&#039;URL de page d&#039;état :
  </p>

  <ul class="simplelist">
   <li>
    <code class="literal">https://localhost/fpm-status</code>
    - Brève sortie dans le format texte par défaut
   </li>
   <li>
    <code class="literal">https://localhost/fpm-status?full</code>
    - Résultats complets dans le format de texte par défaut
   </li>
   <li>
    <code class="literal">https://localhost/fpm-status?json</code>
    - Résultat succinct au format JSON
   </li>
   <li>
    <code class="literal">https://localhost/fpm-status?html&amp;full</code>
    - Résultats complets au format HTML
   </li>
  </ul>
 </div>

 <div class="sect2" id="fpm.status.contents">
  <h3 class="title">Informations affichées</h3>

  <p class="simpara">
   Les valeurs de date et d&#039;heure utilisent le format d&#039;horodatage Unix dans les sorties JSON et XML,
   sinon elles utilisent le format résultant de l&#039;exemple suivant
   <code class="literal">&quot;03/Jun/2021:07:21:46 +0100&quot;</code>.
  </p>

  <table class="doctable table">
   <caption><strong>Informations de base - Toujours affichées sur la page d&#039;état</strong></caption>
   
    <thead>
     <tr>
      <th>Paramètre</th>
      <th>Description</th>
     </tr>

    </thead>

    <tbody class="tbody">
     <tr>
      <td>pool</td>
      <td>Le nom du pool de processus FPM.</td>
     </tr>

     <tr>
      <td>proccess manager</td>
      <td>Le type de gestionnaire de processus - statique, dynamique ou à la demande.</td>
     </tr>

     <tr>
      <td>start time</td>
      <td>Date et heure du dernier démarrage du pool de processus.</td>
     </tr>

     <tr>
      <td>start since</td>
      <td>Temps en secondes écoulées depuis le dernier démarrage du pool de processus.</td>
     </tr>

     <tr>
      <td>accepted conn</td>
      <td>Nombre total de connexions acceptées.</td>
     </tr>

     <tr>
      <td>listen queue</td>
      <td>Nombre de requêtes (backlog) en attente d&#039;un processus libre.</td>
     </tr>

     <tr>
      <td>max listen queue</td>
      <td>Le nombre maximum de requêtes vues dans la file d&#039;attente à un moment donné.</td>
     </tr>

     <tr>
      <td>listen queue len</td>
      <td>Taille maximale autorisée de la file d&#039;attente.</td>
     </tr>

     <tr>
      <td>idle processes</td>
      <td>Nombre de processus actuellement inactifs (en attente de requêtes).</td>
     </tr>

     <tr>
      <td>active processes</td>
      <td>Nombre de processus qui traitent actuellement des requêtes.</td>
     </tr>

     <tr>
      <td>total processes</td>
      <td>Nombre total de processus en cours.</td>
     </tr>

     <tr>
      <td>max active processes</td>
      <td>Nombre maximal de processus actifs simultanément.</td>
     </tr>

     <tr>
      <td>max children reached</td>
      <td>
       Le nombre maximal de processus a-t-il déjà été atteint ? Si oui, la valeur affichée est
       plus grande ou égale à <code class="literal">1</code>, sinon la valeur affichée est <code class="literal">0</code>.
      </td>
     </tr>

     <tr>
      <td>slow requests</td>
      <td>
       Le nombre total de requêtes qui ont atteint le délai configuré de
       <code class="literal">request_slowlog_timeout</code>.
      </td>
     </tr>

     <tr>
      <td>memory peak</td>
      <td>
       Le pic d&#039;utilisation de mémoire depuis le démarrage de FPM.
      </td>
     </tr>

    </tbody>
   
  </table>


  <table class="doctable table">
   <caption><strong>Informations par processus - affichées uniquement en mode de sortie complète (<code class="literal">full</code>)</strong></caption>
   
    <thead>
     <tr>
      <th>Paramètre</th>
      <th>Description</th>
     </tr>

    </thead>

    <tbody class="tbody">
     <tr>
      <td>pid</td>
      <td>Le PID système du processus.</td>
     </tr>

     <tr>
      <td>state</td>
      <td>L&#039;état du processus - Idle, Running, ...</td>
     </tr>

     <tr>
      <td>start time</td>
      <td>La date/heure à laquelle le processus a démarré.</td>
     </tr>

     <tr>
      <td>start since</td>
      <td>Le nombre de secondes écoulées depuis le début du processus.</td>
     </tr>

     <tr>
      <td>requests</td>
      <td>Le nombre total de requêtes servies.</td>
     </tr>

     <tr>
      <td>request duration</td>
      <td>Le temps total en microsecondes passé à servir la dernière requête.</td>
     </tr>

     <tr>
      <td>request method</td>
      <td>La méthode HTTP de la dernière requête servie.</td>
     </tr>

     <tr>
      <td>request uri</td>
      <td>
       L&#039;URI de la dernière requête servie (après traitement par le serveur web, il peut toujours s&#039;agir de
       <code class="literal">/index.php</code> si l&#039;on utilise un motif de redirection du contrôleur frontal).
      </td>
     </tr>

     <tr>
      <td>content length</td>
      <td>La longueur du corps de la requête, en octets, de la dernière requête.</td>
     </tr>

     <tr>
      <td>user</td>
      <td>L&#039;utilisateur HTTP (<code class="literal">PHP_AUTH_USER</code>) de la dernière requête.</td>
     </tr>

     <tr>
      <td>script</td>
      <td>
       Le chemin complet du script exécuté par la dernière requête. Ce sera
       <code class="literal">&#039;-&#039;</code> si non applicable (par exemple, les requêtes de la page d&#039;état).
      </td>
     </tr>

     <tr>
      <td>last request cpu</td>
      <td>
       Le %cpu de la dernière requête. Ce sera 0 si le processus n&#039;est pas au repos car le
       calcul est effectué lorsque le traitement de la requête est terminé.
       La valeur peut dépasser 100 %, car l&#039;indicateur indiquera le pourcentage total du temps CPU utilisé lors de la dernière requête -
       prend en compte les processus sur tous les cœurs, alors que le 100 % est pour un seul cœur.
      </td>
     </tr>

     <tr>
      <td>last request memory</td>
      <td>
       La quantité maximale de mémoire consommée par la dernière requête. Cette valeur sera 0 si le processus
       n&#039;est pas au repos, car le calcul est effectué lorsque le traitement de la requête est terminé.
      </td>
     </tr>

    </tbody>
   
  </table>


  <blockquote class="note"><p><strong class="note">Note</strong>: 
   <span class="simpara">
    Toutes les valeurs sont spécifiques au pool et sont réinitialisées lorsque FPM est redémarré.
   </span>
  </p></blockquote>

  <blockquote class="note"><p><strong class="note">Note</strong>: 
   <span class="simpara">
    Le format de sortie OpenMetrics utilise différents types de paramètres pour mieux s&#039;adapter au format OpenMetrics.
    Les paramètres et les descriptions de leurs valeurs sont inclus dans la sortie du format OpenMetrics.
   </span>
  </p></blockquote>
 </div>

 <div class="sect2">
  <h3 class="title">Historique</h3>
  <table class="doctable informaltable">
   
    <thead>
     <tr>
      <th>Version</th>
      <th>Description</th>
     </tr>

    </thead>

    <tbody class="tbody">
     <tr>
      <td>8.1.0</td>
      <td>Le format openmetrics a été ajouté.</td>
     </tr>

    </tbody>
   
  </table>

 </div>
</div><?php manual_footer($setup); ?>