PHP Handbuch
Zurück |  | Nach vorne

# LXXXII. Process Control Functions

# Einführung

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).

# Anforderungen

Diese Erweiterung benötigt zur Erstellung keine externen Bibliotheken.

# Installation

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.

> Anmerkung: Currently, this module will not function on non-Unix platforms (Windows).

# Laufzeit Konfiguration

Diese Erweiterung definiert keine Konfigurationseinstellungen in der `php.ini`.

# Resource Typen

Diese Erweiterung definiert keine Resource-Typen.

# Vordefinierte Konstanten

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.

`WNOHANG` (integer)

`WUNTRACED` (integer)

`SIG_IGN` (integer)

`SIG_DFL` (integer)

`SIG_ERR` (integer)

`SIGHUP` (integer)

`SIGINT` (integer)

`SIGQUIT` (integer)

`SIGILL` (integer)

`SIGTRAP` (integer)

`SIGABRT` (integer)

`SIGIOT` (integer)

`SIGBUS` (integer)

`SIGFPE` (integer)

`SIGKILL` (integer)

`SIGUSR1` (integer)

`SIGSEGV` (integer)

`SIGUSR2` (integer)

`SIGPIPE` (integer)

`SIGALRM` (integer)

`SIGTERM` (integer)

`SIGSTKFLT` (integer)

`SIGCLD` (integer)

`SIGCHLD` (integer)

`SIGCONT` (integer)

`SIGSTOP` (integer)

`SIGTSTP` (integer)

`SIGTTIN` (integer)

`SIGTTOU` (integer)

`SIGURG` (integer)

`SIGXCPU` (integer)

`SIGXFSZ` (integer)

`SIGVTALRM` (integer)

`SIGPROF` (integer)

`SIGWINCH` (integer)

`SIGPOLL` (integer)

`SIGIO` (integer)

`SIGPWR` (integer)

`SIGSYS` (integer)

`SIGBABY` (integer)

# Beispiele

This example forks off a daemon process with a signal handler.

Beispiel 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
         }

    }

    ?>

# Siehe auch

A look at the section about POSIX functions may be useful.

Zurück | Zum Anfang | Nach vorne
pg_update | Nach oben | pcntl_exec