Rechercher une fonction PHP

pcntl_signal

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

pcntl_signalInstalle un gestionnaire de signaux

Description

bool pcntl_signal ( int $signo , callable|int $handler [, bool $restart_syscalls = true ] )

pcntl_signal() installe un nouveau gestionnaire de signaux ou remplace le gestionnaire de signaux courant pour le signal indiqué par le paramètre signo.

  

Liste de paramètres

signo

Le numéro du signal.

handler

Le gestionnaire de signaux. Peut être un callable, qui sera appelé pour gérer le signal, ou bien l'une des deux constantes globales SIG_IGN ou SIG_DFL, qui vont, respectivement, ignorer le signal ou restaurer le gestionnaire de signaux par défaut.

Si un callable est fourni, il doit implémenter la signature suivante :

void handler ( int $signo )
signo
Le signal à gérer.

Note:

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 gestionnaire de signaux pour un autre, ou que le script se termine.

restart_syscalls

Le paramètre optionnel restart_syscalls spécifie si l'appel système de redémarrage (restarting) doit être utilisé lorsque ce signal arrive.

  

Valeurs de retour

Cette fonction retourne TRUE en cas de succès ou FALSE si une erreur survient.

  

Historique

Version Description
4.3.0 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 dite (comme utilisé dans l'exemple suivant).

  

Exemples

Exemple #1 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 
"Fait\n";

?>

  

Notes

La fonction pcntl_signal() ne place pas dans une pile les gestionnaires de signaux, mais les remplace.

  

Voir aussi

Rechercher une fonction PHP

Version en cache

23/12/2024 17:58:20 Cette version de la page est en cache (à la date du 23/12/2024 17:58:20) afin d'accélérer le traitement. Vous pouvez activer le mode utilisateur dans le menu en haut pour afficher la dernère version de la page.

Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-pcntl-signal.html

L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.

Références

  1. Consulter le document html Langue du document :fr Manuel PHP : http://php.net

Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.

Table des matières Haut