pcntl_signal

(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)

pcntl_signalBir sinyal eylemci belirtir

Açıklama

pcntl_signal(int$sinyal, callable|int$işleyici, bool$restart_syscalls = true): bool

sinyal ile belirtilen sinyal için yeni bir eylemci işlev ismi tanımlar.

Bağımsız Değişkenler

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:

işleyici(int$sinyal, mixed$siginfo): void
sinyal
İşlenecek sinyal.
siginfo
İşletim sistemi siginfo_t yapılarını destekliyorsa, sinyale bağlı sinyal bilgisini içeren bir dizi olmalıdır.

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.

Dönen Değerler

Başarı durumunda true, başarısızlık durumunda false döner.

Sürüm Bilgisi

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

Örnekler

Ö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";

?>

Notlar

pcntl_signal() sinyal işleyicileri yığıtıyla etkileşmez, sadece işleyiciyi değiştirir.

Ayrıca Bakınız

To Top