pcntl_signal în PHP

Multiprocesare și Sistem (PCNTL) PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8 Q&A / Distribuie cod

Ghid complet pentru pcntl_signal în PHP: capturarea semnalelor UNIX (SIGTERM, SIGINT, SIGHUP) pentru închiderea elegantă (Graceful Shutdown) a aplicațiilor CLI.

Sintaxă
pcntl_signal(int $signo, callable|int $handler, bool $restart_syscalls = true): bool

Ce face pcntl_signal

Funcția înregistrează o funcție callback (handler) care va fi apelată automat când sistemul de operare transmite un semnal UNIX către scriptul PHP (de exemplu, când utilizatorul apasă Ctrl+C sau când Docker/Kubernetes trimite SIGTERM pentru oprire).

Exemplu practic: Implementarea Graceful Shutdown pentru un worker de cozi
<?php
$ruleaza = true;

// Activăm procesarea asincronă a semnalelor în PHP 7.1+:
pcntl_async_signals(true);

// Înregistrăm interceptarea semnalelor SIGINT (Ctrl+C) și SIGTERM (Docker stop):
pcntl_signal(SIGINT, function() use (&$ruleaza) {
    echo "\n[Semnal Primit] Se încheie procesarea elegantă înainte de oprire...\n";
    $ruleaza = false;
});

pcntl_signal(SIGTERM, function() use (&$ruleaza) {
    $ruleaza = false;
});

echo "Worker pornit. Ascult evenimente (apasă Ctrl+C pentru oprire sigură)...\n";
while ($ruleaza) {
    // Simulăm procesarea unui job din coadă:
    usleep(500000);
}

echo "Toate conexiunile la baza de date au fost închise curat. La revedere!\n";
Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: pcntl_signal

Ai o nelămurire despre utilizarea comenzii pcntl_signal sau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!

💬

Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!

Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.