LXXXIV. Contrôle des processus

Introduction

Le système de contrôle des processus de PHP implémente un système de création, gestion et terminaison des processus comme sous Unix. Cette extension ne doit pas être activée pour une utilisation en serveur web, car les résultats pourraient être inattendus.

Cettte documentation explique l'utilisation générale des fonctions du gestionaire de processus. Pour des informations plus détaillées sur le contrôle des processus Unix, nous vous encourageons à consulter votre documentation système, incluant notamment fork(2), waitpid(2) and signal(2), ou bien à compulser un ouvrage de référence comme "Advanced Programming in the UNIX Environment" par W. Richard Stevens (Addison-Wesley).

Note : Cette extension n'est pas disponible sur les plate-formes Windows.

Pré-requis

Ces fonctions sont disponibles dans le module PHP standard, qui est toujours accessible.

Installation

Le support du contrôle des processus n'est pas activé par défaut en PHP. Pour cela, vous devez utiliser l'option de compilation --enable-pcntl.

Note : Actuellement, ce module ne fonctionne pas sur les environnement non Unix comme Windows.

Configuration à l'exécution

Cette extension ne définit aucune directive de configuration.

Types de ressources

Cette extension ne définit aucune ressource.

Constantes prédefinies

La liste suivante représente les signaux supportés par les fonctions de gestion des processus. Reportez vous au manuel de votre système (signal(7)) pour plus de détails sur ces signaux.

WNOHANG (entier)

WUNTRACED (entier)

SIG_IGN (entier)

SIG_DFL (entier)

SIG_ERR (entier)

SIGHUP (entier)

SIGINT (entier)

SIGQUIT (entier)

SIGILL (entier)

SIGTRAP (entier)

SIGABRT (entier)

SIGIOT (entier)

SIGBUS (entier)

SIGFPE (entier)

SIGKILL (entier)

SIGUSR1 (entier)

SIGSEGV (entier)

SIGUSR2 (entier)

SIGPIPE (entier)

SIGALRM (entier)

SIGTERM (entier)

SIGSTKFLT (entier)

SIGCLD (entier)

SIGCHLD (entier)

SIGCONT (entier)

SIGSTOP (entier)

SIGTSTP (entier)

SIGTTIN (entier)

SIGTTOU (entier)

SIGURG (entier)

SIGXCPU (entier)

SIGXFSZ (entier)

SIGVTALRM (entier)

SIGPROF (entier)

SIGWINCH (entier)

SIGPOLL (entier)

SIGIO (entier)

SIGPWR (entier)

SIGSYS (entier)

SIGBABY (entier)

Exemples

Cet exemple forke un processus démon, avec un gestionnaire de signaux.

Exemple 1. Exemple de contrôle de processus

<?php

$pid
= pcntl_fork();
if (
$pid == -1) {
     die(
"impossible de forker");
} else if (
$pid) {
     exit();
// nous sommes le processus p&egrave;re
} else {
     
//nous sommes le processus fils
}

// d&eacute;tachons le processus du terminal
if (!posix_setsid()) {
    die(
"impossible de se d&eacute;tacher du terminal
}

// configuration des gestinnaires de signaux
pcntl_signal(SIGTERM, "
sig_handler");
pcntl_signal(SIGHUP, "
sig_handler");

// boucle infinie
while(1)
{
    // ex&eacute;cution de quelque chose
}

function sig_handler($signo)
{

     switch($signo)
{
         case SIGTERM:
             // gestion des t&acirc;ches de terminaison
             exit;
             break;
         case SIGHUP:
             // gestion des t&acirc;ches de red&eacute;marrage
             break;
         default:
             // gestion des autres t&acirc;ches
     
}

}

?>

Voir aussi

Jetez un oeil à la section sur les fonctions POSIX.

Table des matières
pcntl_exec --  Exécute le programmee indiqué dans l'espace courant de processus
pcntl_fork -- Forks the currently running process
pcntl_signal -- Installe un gestionnaire de signaux
pcntl_waitpid -- Attend la fin de l'exécution d'un processus fils
pcntl_wexitstatus --  Retourne le code d'un processus fils terminé
pcntl_wifexited --  Retourne TRUE si le code de retour représente une fin normale
pcntl_wifsignaled --  Returns TRUE if status code represents a termination due to a signal
pcntl_wifstopped --  Returns TRUE if child process is currently stopped
pcntl_wstopsig --  Returns the signal which caused the child to stop
pcntl_wtermsig --  Returns the signal which caused the child to terminate