PHP.nl

pcntl_signal

pcntl_signal

Installs a signal handler

bool **pcntl_signal** int $signal  $handler bool $restart_syscalls

The function installs a new signal handler or replaces the current signal handler for the signal indicated by . pcntl_signal``signal

signalThe signal number.

handler The signal handler. This may be either a , which will be invoked to handle the signal, or either of the two global constants or , which will ignore the signal or restore the default signal handler respectively. callable``SIG_IGN``SIG_DFL

   If a  is given, it must implement the following
   signature:
  `callable`


   
   
  ```php

void **** int $signo mixed $siginfo


`signal`The signal being handled.

`siginfo`If operating systems supports siginfo_t structures, this will be an array of signal information dependent on the signal.



> **Opmerking:** > Note that when you set a handler to an object method, that object's
>         reference count is increased which makes it persist until you either
>         change the handler to something else, or your script ends.

`restart_syscalls`Specifies whether system call restarting should be used when this
       signal arrives.



return.success


   
  


   
  **Voorbeeld:  example**

```php
<?php
pcntl_async_signals(true);

// signal handler function
function sig_handler($signo)
{

     switch ($signo) {
         case SIGTERM:
             // handle shutdown tasks
             exit;
             break;
         case SIGHUP:
             // handle restart tasks
             break;
         case SIGUSR1:
             echo "Caught SIGUSR1...\n";
             break;
         default:
             // handle all other signals
     }

}

echo "Installing signal handler...\n";

// setup signal handlers
pcntl_signal(SIGTERM, "sig_handler");
pcntl_signal(SIGHUP,  "sig_handler");
pcntl_signal(SIGUSR1, "sig_handler");

// or use an object
// pcntl_signal(SIGUSR1, array($obj, "do_something"));

echo"Generating signal SIGUSR1 to self...\n";

// send SIGUSR1 to current process id
// posix_* functions require the posix extension
posix_kill(posix_getpid(), SIGUSR1);

echo "Done\n";

?>
doesn't stack the signal handlers, but replaces them.

pcntl_signal

Dispatch Methods

There are several methods of dispatching signal handlers:

pcntl_async_signalstickpcntl_signal_dispatch

When signals are dispatched asynchronously or using tick-based execution, blocking functions like
 may be interrupted.

sleep

Signal (IPC)pcntl_async_signals``pcntl_fork``pcntl_signal_dispatch``pcntl_waitpid