Du bist hier: Tips » Scripte » PHP
PHP
Referenzliste

pcntl_signal

PCNTL Funktionen

    Befehl:
bool pcntl_signal ( int $signo , callable | int $handler [, bool $restart_syscalls = true ] )


    Parameter-Liste:
NameBeschreibung
signoDie Signalnummer.
handlerDas Signal-Handler. Dies kann entweder ein callable, die aufgerufen wird, zu hand werden die Signal oder eines der beiden globalen Konstanten SIG_IGN oder SIG_DFL, der das Signal zu ignorieren oder die Standard wird Signal-Handler auf.
Hinweis:
Beachten Sie, dass, wenn Sie einen Handler für ein Objekt-Methode festgelegt wird Referenzzähler des Objekts erhöht, was sie bestehen, bis Sie entweder die Handler, etwas anderes macht, oder Ihr Skript endet.
restart_syscallsLegt fest, ob Systemaufruf Neustart sollte verwendet werden, wenn dieses Signal ankommt.

    Rückgabewerte:
Gibt bei Erfolg TRUE zurück. Im Fehlerfall wird FALSE zurückgegeben.

    Beschreibung:
Die pcntl_signal()-Funktion installiert eine neue Signal-Handler oder ersetzt die aktuelle Signalhandler für das von signo angegeben Signal.


    Aktiv in Version:
(PHP 4 >= 4.1.0, PHP 5, PHP 7)

    Siehe auch:
Richtet eine Signalverarbeitung ein
 
Sets und ruft blockiert Signale
 
Wartet auf Signale
 
Wartet auf Signale, mit einem Timeout
 

pcntl_signal() - Beispiel:


Eingabe:
<?php
// Verwendung von Ticks wird seit PHP 4.3.0. benötigt
declare(ticks = 1);

// Signalverarbeitungsfunktion
function sig_handler($signo)
{

     switch ($signo) {
         case SIGTERM:
             // Aufgaben zum Beenden bearbeiten
             exit;
             break;
         case SIGHUP:
             // Aufgaben zum Neustart bearbeiten
             break;
         case SIGUSR1:
             echo "Caught SIGUSR1...\n";
             break;
         default:
             // Alle anderen Signale bearbeiten
     }

}

echo "Richte neue Signalverarbeitung ein...\n";

// Signalverarbeitung einrichten
pcntl_signal(SIGTERM, "sig_handler");
pcntl_signal(SIGHUP,  "sig_handler");
pcntl_signal(SIGUSR1, "sig_handler");

// oder ein Objekt verwenden, ab PHP 4.3.0 möglich
// pcntl_signal(SIGUSR1, array($obj, "tu_etwas");

echo "Erzeuge signal SIGTERM an mich selbst...\n";

// sende SIGUSR1 an die aktuelle Prozess ID
posix_kill(posix_getpid(), SIGUSR1);

echo "Fertig\n"


?>


Beschreibung:
Version Beschreibung
4.3.0 Die restart_syscalls-Parameter hinzugefügt.
4.3.0 Die Fähigkeit, eine Objektmethode als Callback zu verwenden verfügbar wurde.
4.3.0 Ab PHP 4.3.0 PCNTL nutzt Zecken als Signal Griff Callback-Mechanismus, der viel schneller als der bisherige Mechanismus ist. Diese Änderung folgt die gleiche Semantik wie mit "user ticks". Sie müssen die declare()-Anweisung verwenden, um die Stellen in Ihrem Programm, wo Rückrufe dürfen für das Signal-Handler-Funktion auftreten angeben richtig (wie in dem folgenden Beispiel verwendet wird).
PCNTL Funktionen