LXXX. Process Control Functions

You will need to use the --enable-pcntl configuration option when compiling PHP to enable Process Control support .

הערה :

טבלה 1 . Supported Signals

SIGFPE SIGCONT SIGKILL
SIGSTOP 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


Process Control Example

דוגמה 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

 
     }

 

}

 

?



תוכן העניינים:
pcntl_exec -- Executes specified program in current process space
pcntl_fork -- Forks the currently running process
pcntl_signal -- Installs a signal handler
pcntl_waitpid -- Waits on or returns the status of a forked child
pcntl_wexitstatus -- Returns the return code of a terminated child
pcntl_wifexited -- Returns TRUE if status code represents a successful exit
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