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";
Întrebări & Exemple de Cod:
pcntl_signalAi o nelămurire despre utilizarea comenzii
pcntl_signalsau 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.