2014-11-21 2 views
1

Я пытаюсь создать процесс демона, который обрабатывает несколько дочерних потоков. Но дочерний поток, похоже, не посылает сигнал родительскому устройству для вызова функции. я попытался вывести его из класса и сделать его стандартной функцией, но это тоже не помогает.SIGCHILD не обнаруживает сигнал, когда умирает дочерний процесс

class Daemon { 
    public function __construct() { 

     $set = pcntl_signal(SIGCHLD, array($this, 'childSignalHandler')); 
     $pid = pcntl_fork(); 
     if ($pid == -1) { 
      echo 'could not fork'; 
     } elseif ($pid) { 
      // parent 
      sleep(20); 
      // this would keep running and spawn other children from time to time 
     } else { 
      // child 
      sleep(5); 
      // should call childSignalHandler() in parent 
     } 
    } 

    public function childSignalHandler($pid) { 
     echo 'child is dead'; 
    } 
} 

new Daemon(); 
+1

очевидно работает, если я добавляю declare (ticks = 1); что смущает то, что это устарело от 5.3, но я не могу найти никакой информации о том, что должно заменить его. – DAB

+1

вы должны сделать ответ. – pilcrow

ответ

1

очевидно, он работает, если я добавляю declare (ticks = 1); что смущает то, что это устарело от 5.3, но я не могу найти никакой информации о том, что должно заменить его.

Смежные вопросы