pcntl_signal

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

pcntl_signalBir sinyal eylemci belirtir

Açıklama

pcntl_signal ( int $sinyal , callback $eylemci [, bool $yeniden_syscalls = true ] ) : bool

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

Değiştirgeler

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.

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
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).

Örnekler

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

?>

Ayrıca Bakınız