(PHP 4 >= 4.1.0, PHP 5)
pcntl_signal — Bir sinyal eylemci belirtir
sinyal ile belirtilen sinyal için yeni bir eylemci işlev ismi tanımlar.
Sinyal numarası.
Kullanıcı tarafından oluşturulmuş bir işlevin veya yöntemin ismi ya da şu iki küresel sabitten biri: SIG_IGN, SIG_DFL.
Bilginize:
Eylemciyi bir nesnenin yöntemi olarak belirtirseniz, eylemci değiştirilene veya betik sonlanana kadar geçerli olmak üzere nesnenin başvuru sayısı arttırılır.
Bu sinyal geldiğinde yeniden sistem çağrısı yapılıp yapılmayacağını belirler. Öntanımlı değer: TRUE.
Başarı durumunda TRUE, başarısızlık durumunda FALSE döner.
Sürüm: | Açıklama |
---|---|
4.3.0 | yeniden_syscalls değiştirgesi eklendi. |
4.3.0 | Bir geriçağırım işlevi olarak bir nesne yöntemi kullanılabilir oldu. |
4.3.0 | PHP 4.3.0'dan itibaren, PCNTL, sinyal işleme geriçağırım mekanizması olarak kullanıcı tiklerini kullanmaya başladı. Bu değişiklik "kullanıcı tiklerinin" kullanıldığı anlamındadır. Geriçağırım işlevlerinizin gerektiği gibi çalışması için yerlerini declare() deyimini kullanarak belirtmelisiniz (örnekteki gibi). |
Örnek 1 - pcntl_signal() örneği
<?php
// PHP 4.3.0'dan beri tikler kullanılıyor
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 (PHP 4.3.0 ve sonrası)
// pcntl_signal(SIGUSR1, array($obj, "do_something");
echo"Kendimize SIGTERM gönderelim...\n";
// geçerli süreç kimliğine SIGUSR1 gönder
posix_kill(posix_getpid(), SIGUSR1);
echo "Done\n"
?>