Contrôle des processus

Manuel PHP
Précédent |  | Suivant

# LXXXI. 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. 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
         }
    }
    ?<

Précédent | Sommaire | Suivant
pg_update | Niveau supérieur | pcntl_exec