:PHP CLI PHP7.0 Ubuntu Xenial sunucuda çalışmıyor PCNTL ben PHP 5.5.9 Bu komut dosyasını kullanıyorum
çalışıyor Ubuntu 14 fakat yılındadeclare(ticks = 1);
pcntl_signal(SIGTERM, array($this, 'stopSending'));
pcntl_signal(SIGINT, array($this, 'stopSending'));
pcntl_signal(SIGUSR1, array($this, 'stopSending'));
pcntl_signal(SIGUSR2, array($this, 'stopSending'));
pcntl_signal(SIGQUIT, array($this, 'stopSending'));
pcntl_signal(SIGHUP, array($this, 'stopSending'));
public function stopSending($signals)
{
echo "hello";
exit();
}
while (true) {
// some logic
}
deneyin ile Ubuntu 16.04 yürütmek için zaman PHP7.0 ve sinyal göndermek (PID öldürmek), PHP CLI durmaz ve runnig tutmak.
Ubuntu 16.04 i PCNTL eklentisini kontrol edin ve bu ok: Ben çalıştırdığınızda
>php -m | grep pcntl
pcntl
Ben herhangi bir hata yok, ama ne durur (veya görünen eko).
PHP7 ve pcntl ile ilgili bir sorun var mı?
function start()
{
while (true) {
// some logic
}
}
declare(ticks = 1);
pcntl_signal(SIGTERM, "stopSending");
pcntl_signal(SIGINT, "stopSending");
pcntl_signal(SIGUSR1, "stopSending");
pcntl_signal(SIGUSR2, "stopSending");
pcntl_signal(SIGQUIT, "stopSending");
pcntl_signal(SIGHUP, "stopSending");
function stopSending($signals)
{
echo "hello";
exit();
}
start();
Bu kod durmuyor: fonksiyonuna içine iken döngü encapsulate zaman
GÜNCELLEME
sorundur.
Gönderdiğiniz kod SIGTERM'de çıkmıyor. Bu yüzden SIGTERM'e gönderirken durmamalı. Neden daha önce çalışmadı, doğru soru. –
@ErkiA Kodu düzenledim. Kayıt sinyali işleyicilerinden sonra bir döngü var. Sorun, sinyallerin stopSending() tarafından yakalanması, ancak eko yazdırılmamasıdır. – jfra
@ErkiA Yani, hata ayıklama kodudur. Özgün kod işlevi "stopSending" programdan çıkar. – jfra