Úvod
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).
Požadavky
Tyto funkce jsou k dispozici jako součást
standardního modulu, který je vždy dostupný.
Instalace
Process Control support in PHP is not enabled by default. You will need
to use the --enable-pcntl
configuration option when compiling PHP to enable Process Control
support.
Poznámka:
Currently, this module will not function on non-Unix platforms
(Windows).
Konfigurace běhu
Toto rozšíření nemá definováno žádné konfigurační
direktivy.
Typy prostředků
Toto rozšíření nemá definován žádný typ prostředku
(resource).
Předdefinované konstanty
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.
Příklady
This example forks off a daemon process with a signal handler.
Příklad 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
}
}
?> |
|