(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)
pcntl_signal — Bir sinyal eylemci belirtir
sinyal
ile belirtilen sinyal için yeni bir eylemci işlev ismi tanımlar.
sinyal
Sinyal numarası.
işleyici
Sinyali işlemek için kullanıcı tarafından oluşturulmuş bir işlevin veya yöntemin ismi ya da şu iki küresel sabitten biri: SIG_IGN
(sinyalin yoksayılması için), SIG_DFL
(öntanımlı sinyal işleyiciyi devreye sokmak için).
Bir geriçağırım işlevi belirtilmişse, sözdizimini şöyle olmalıdır:
sinyal
siginfo
Bilginize:
İşleyici bir nesnenin yöntemi olarak belirtirseniz, işleyici değiştirilene veya betik sonlanana kadar geçerli olmak üzere nesnenin başvuru sayısı arttırılır.
restart_syscalls
Bu sinyal geldiğinde yeniden sistem çağrısı yapılıp yapılmayacağını belirler.
Sürüm: | Açıklama |
---|---|
7.1.0 | Geriçağırım işlevinin ikinci bağımsız değişkeninde sinyal bilgisi veriliyor. Bu veri sadece siginfo_t yapısını sağlayan işletim sistemlerinde bulunur. İşletim sistemi bu bilgiyi sağlamıyorsa geriçağırım işlevinin ikinci bağımsız değişkenine null aktarılmalıdır |
Örnek 1 - pcntl_signal() örneği
<?php
// tikleri kullanalım
declare(ticks = 1);
// sinyal eylemcimiz
function sig_handler($signo)
{
switch ($signo) {
case SIGTERM:
// kapanma işlemleri
exit;
break;
case SIGHUP:
// yeniden başlatma işlemleri
break;
case SIGUSR1:
echo "SIGUSR1 yakalandı...\n";
break;
default:
// Diğer sinyallerin işlemleri
}
}
echo "Sinyal eylemci kuruluyor...\n";
// Sinyal eylemcileri belirleyelim
pcntl_signal(SIGTERM, "sig_handler");
pcntl_signal(SIGHUP, "sig_handler");
pcntl_signal(SIGUSR1, "sig_handler");
// Veya bir nesne kullanalım
// pcntl_signal(SIGUSR1, array($obj, "do_something"));
echo"Kendimize SIGTERM gönderelim...\n";
// geçerli süreç kimliğine SIGUSR1 gönder
//posix_* işlevleri posix eklentisi gerektirir
posix_kill(posix_getpid(), SIGUSR1);
echo "Done\n";
?>
pcntl_signal() sinyal işleyicileri yığıtıyla etkileşmez, sadece işleyiciyi değiştirir.