PHP ʖ²ἯTH
º/A
LXXXII. Process Control Functions
½鉜
Process Control support in PHP implements the Unix style of process creation, program execution, signal handling and process termination. Process Control should not be enabled within a webserver environment and unexpected results may happen if any Process Control functions are used within a webserver environment.
This documentation is intended to explain the general usage of each of the Process Control functions. For detailed information about Unix process control you are encouraged to consult your systems documentation including fork(2), waitpid(2) and signal(2) or a comprehensive reference such as Advanced Programming in the UNIX Environment by W. Richard Stevens (Addison-Wesley).
ע: ¸À©չģ¿鲻ʊӃӚ Windows ƽ̨£¡
Шdz
ΞШ͢²¿¿⎄¼þ¾ͿɒԼӈ뱾)չģ¿鵄֧³֡£
°²װ
Process Control support in PHP is not enabled by default. You have to compile the CGI or CLI version of PHP with --enable-pcntl configuration option when compiling PHP to enable Process Control support.
ע: Currently, this module will not function on non-Unix platforms (Windows).
ԋАʱŤփ
¸À©չģ¿鎴¶¨ҥȎºΉ薃ָn¡£
Դ Ѝ
¸À©չģ¿鎴¶¨ҥȎºΗʔ´ Ѝ¡£
Ԥ¶¨ҥ³£
The following list of signals are supported by the Process Control functions. Please see your systems signal(7) man page for details of the default behavior of these signals.
·¶=
This example forks off a daemon process with a signal handler.
=ד 1. Process Control Example
?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}}?
Ϡ¹زο¼
A look at the section about POSIX functions may be useful.
Ŀ¼ 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
º/A
ưµ㼯A
pg_update
ɏһ¼¶
pcntl_exec