LXXXII. Contrôle des processus

Le gestionnaire de contrôle des processus n ' est pas activé par défaut . Il faut utiliser l' option de configuration --enable-pcntl lors de la compilation de PHP pour l 'activer .

La liste suivante rassemble tous les signaux qui sont actuellement supportés par les fonctions de gestion des processus de PHP . Reportez vous à votre manuel pour plus de détails sur les comportements de ces signaux .

Tableau 1 . Signaux supportés

SIG_IGN SIGFPE SIGCONT
SIG_DFL SIGKILL SIGSTOP
SIG_ERR SIGUSR1 SIGTSTP
SIGHUP SIGUSR2 SIGTTIN
SIGINT SIGSEGV SIGTTOU
SIGQUIT SIGPIPE SIGURG
SIGILL SIGALRM SIGXCPU
SIGTRAP SIGTERM SIGXFSZ
SIGABRT SIGSTKFLT SIGVTALRM
SIGIOT SIGCHLD SIGPROF
SIGBUS SIGCLD SIGWINCH
SIGPOLL SIGIO SIGPWR
SIGSYS


Exemple de contrôle de processus

Cet exemple effectue un fork du processus démon grâce à un gestionnaire de signaux .

Exemple 1 .

 
?php

 
$pid

 
=

 
pcntl_fork(

 
)

 
;

 
if

 
($pid

 
==

 
-1

 
)

 
{

 
die("could

 
not

 
fork")

 
;

 
}

 
else

 
if

 
($pid

 
)

 
{

 
exit()

 
;

 
/

 
/

 
we

 
are

 
the

 
parent

 
}

 
else

 
{

 
/

 
/

 
we

 
are

 
the

 
child

 
  }

 
/

 
/

 
detatch

 
from

 
the

 
controlling

 
terminal

 
if

 
(!posix_setsid()

 
)

 
{

 
die("could

 
not

 
detach

 
from

 
terminal")

 
;

 
  }

 
/

 
/

 
setup

 
signal

 
handlers

 
pcntl_signal(SIGTERM

 
,

 
"sig_handler")

 
;

 
pcntl_signal(SIGHUP

 
,

 
"sig_handler")

 
;

 
/

 
/

 
loop

 
forever

 
performing

 
tasks

 
while(1

 
)

 
{

 
/

 
/

 
do

 
something

 
interesting

 
here

 
}

 
function

 
sig_handler($signo

 
)

 
{

 
switch($signo

 
)

 
{

 
case

 
SIGTERM

 
:

 
/

 
/

 
handle

 
shutdown

 
tasks

 
exit

 
;

 
break

 
;

 
case

 
SIGHUP

 
:

 
/

 
/

 
handle

 
restart

 
tasks

 
break

 
;

 
default

 
:

 
/

 
/

 
handle

 
all

 
other

 
signals

 
     }

 
}

 
?



Table des matières
pcntl_exec -- Executes specified program in current process space
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