(PHP 4 >= 4.1.0, PHP 5, PHP 7)
pcntl_signal — Bir sinyal eylemci belirtir
sinyal
ile belirtilen sinyal için yeni bir eylemci
işlev ismi tanımlar.
sinyal
Sinyal numarası.
eylemci
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.
yeniden_syscalls
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"
?>