8.92 Contrôle des processus 
8 Référence des fonctions 
 Manuel PHP 
 . Introduction . Pré-requis . Installation . Configuration à l'exécution . Types de ressources . Constantes pré-définies . Exemples . Voir aussi . pcntl_alarm . pcntl_exec . pcntl_fork . pcntl_getpriority . pcntl_setpriority ->pcntl_signal . pcntl_wait . pcntl_waitpid . pcntl_wexitstatus . pcntl_wifexited . pcntl_wifsignaled . pcntl_wifstopped . pcntl_wstopsig . pcntl_wtermsig
 
  | 
 
  8.92.14 pcntl_signal()Installe un gestionnaire de signaux[ Exemples avec pcntl_signal ]   PHP 4 >= 4.1.0, PHP 5 
bool
 pcntl_signal (
int
 
signo
 ,
callback
 
handle
 ,
bool
 
restart_syscalls
 )
pcntl_signal
  installe un nouveau gestionnaire
    de signaux pour le signal indiqué par le paramètre 
     
signo
 . Le gestionnaire de signaux est affecté
    à  
handler
  qui peut être le nom d'une fonction
    utilisateur, ou bien l'une des deux constantes globales
     
SIG_IGN
  et  
SIG_DFL
 .
    Le paramètre optionnel  
restart_syscalls
  
    spécifie si l'appel système de redémarrage (restarting) doit être utilisé
    lorsque ce signal arrive et, par défaut, ce paramètre vaut  
TRUE
 .
    
    Cette fonction retourne  
TRUE
  en cas de
succès,  
FALSE
  en cas d'échec.
    
| Note |  | 
 
     La paramètre optionnel  
restart_syscalls
  n'est disponible
     que depuis la version 4.3.0 de PHP.
     
 |   
| Note |  | 
 
     La possibilité d'utiliser une méthode d'objet comme fonction de callback
     est disponible depuis PHP 4.3.0. Notez que lorsque vous configurez le
     gestionnaire avec une méthode d'objet, le compteur de référence de l'objet
     est incrémenté, ce qui le rend persistant jusqu'à ce que vous changiez le
     gestionaire de signaux pour un autre, ou que le script se termine.
     
 |   
| Exemple avec pcntl_signal |  
<?php // l'usage des ticks est nécessaire depuis PHP 4.3.0 declare (ticks = 1);
  // gestionnaire de signaux système function sig_handler($signo)  {
       switch($signo) {          case SIGTERM:              // gestion de l'extinction              exit;              break;          case SIGHUP:              // gestion du redémarrage              break;          case SIGUSR1:              echo "Reçu le signe SIGUSR1...\n";              break;          default:              // gestion des autres signaux      }
  }
  echo "Installation du gestionnaire de signaux...\n";
  // Installation des gestionnaires de signaux pcntl_signal(SIGTERM, "sig_handler"); pcntl_signal(SIGHUP,  "sig_handler"); pcntl_signal(SIGUSR1, "sig_handler");
  // ou bien utilisez un objet (disponible depuis PHP 4.3.0) // pcntl_signal(SIGUSR1, array($obj, "faire_quelque_chose");
  echo "Génération d'un signal SIGTERM à moi-même...\n";
  // envoi de SIGUSR1 à l'identifiant de processus courant posix_kill(posix_getpid(), SIGUSR1);
  echo "Done\n"
  ?>
 
 |   
| Note |  | 
 
     Depuis PHP 4.3.0, PCNTL utilise les ticks comme mécanisme de signaux de traitement
     des rappels qui est plus rapide que l'ancien mécanisme.
     Ce changement suit les mêmes règles que l'utilisation des 
     " user ticks ".
     Vous devriez utiliser la requête  declare() 
     pour spécifier l'endroit dans votre programme où les rappels sont autorisés
     à être utilisés pour le traitement du signal de la fonction proprement dîte (comme utilisé
     dans l'exemple précédent).
     
 |   
    Voir aussi 
     
pcntl_fork
  et
     
pcntl_waitpid
 .
    
 |