8.93 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.93.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 signeux pour un autre, ou que le script se termine.
|
Exemple avec pcntl_signal |
<?php // l'usage des tick est nécessaire depuis PHP 4.3.0 declare (ticks = 1);
// gestionnaire de siganux 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_quelquechose");
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échanisme de signals de traitement
des rappels qui est plus rapide que l'ancien méchanisme.
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
.
|