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