PHP lernt die Funktionsweise des Signalverarbeitungsmechanismus

little bottle
Freigeben: 2023-04-06 06:02:01
nach vorne
2273 Leute haben es durchsucht

Dieser Artikel beschreibt hauptsächlich Beispiele für Signalverarbeitungsmechanismen, die in PHP-Sprache geschrieben sind. Es hat einen gewissen Referenzwert.

function sig_handler($sig)
{
    print("handled sig: $sig\n");
}



pcntl_signal(SIGIO,   "sig_handler");
posix_kill(posix_getpid(),SIGIO);

while(true)
{
    posix_kill(posix_getpid(),SIGIO);

    pcntl_signal_dispatch();

    sleep(1);
}
Nach dem Login kopieren

Es ist am besten, die Signalwarteschlange manuell zu durchlaufen, anstatt die von PHP bereitgestellten Signalverarbeitungsmechanismen wie „declare(ticks=1)“ und „tick_handler()“ zu verwenden tick-Mechanismus, jedes Mal, wenn eine Anweisung ausgeführt wird, wird tick_handler zurückgerufen, um zu sehen, ob ein Signal vorhanden ist, aber meistens gibt es kein Signal.

posix_signal legt die Rückrufverarbeitung des Signals fest.

posix_kill stellt das Signal nur in die Signalwarteschlange des Prozesses verarbeitet von pcntl_signal_dispatch.

posix_getpwnam("nginx"): Ruft die UID, GID und andere Informationen des Benutzernamens ab

pcntl_signal(SIGPIPE, SIG_IGN, false): Ignoriert die SIGPIPE Vom Kernel gesendetes Signal: Wenn die Verbindung geschlossen wurde, sendet der Prozess weiterhin Daten an den ungültigen Socket. Das System empfängt ein TCP-Paket mit dem RST-Steuerbit und das System sendet ein SIGPIPE-Signal an den Prozess, um dies mitzuteilen Prozess, dass die Verbindung getrennt wurde und kein weiterer Schreibvorgang erforderlich ist. Die Standardbehandlung dieses Signals besteht darin, den Prozess zu beenden, aber der Prozess kann es abfangen und das Signal ignorieren, um zu verhindern, dass er unfreiwillig beendet wird.

Socket-Kontextoptionen:

Backlog: Wird verwendet, um die Anzahl ausstehender Verbindungen in der Stream-Listening-Warteschlange zu begrenzen.

so_reuseport: Wiederverwendungsport (durch Kernel-Planung verbunden). ) Da der entsprechende Prozess durch Hashing gekennzeichnet ist, kann die Anzahl der Überwachungsprozesse nicht geändert werden.)

Timer-Signalverarbeitung

pcntl_signal(SIGALRM,"sig_handler");
pcntl_alarm(2);
function sig_handler($sig)
{
    echo "one second after";
}
while (1)
{
    pcntl_signal_dispatch();
    sleep(1);
}
Nach dem Login kopieren

Verwandt Tutorials: PHP-Programmierung vom Einstieg bis zur Beherrschung

Das obige ist der detaillierte Inhalt vonPHP lernt die Funktionsweise des Signalverarbeitungsmechanismus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:csdn.net
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage