새 스레드에서 CLI
클래스의 일부 메서드를 실행하려면 PHP
에 pcntl
extetntion을 사용하려고합니다. 작은 테스트 방법을 썼습니다 :새로운 PHP 프로젝트를 시작하고 종료하는 방법은 무엇입니까?
private function startProcess($data)
{
$this->log('Start a child process');
$pid = pcntl_fork();
if($pid == -1)
$this->log('Could not fork');
elseif($pid)
pcntl_wait($status);
else {
$this->process($data);
sleep(10);
posix_kill(posix_setsid(), SIGTERM);
}
}
이 메서드는 10 번 호출됩니다. $this->process($data);
은 콘솔에 데이터를 인쇄합니다. 내가 알기로는 프로세스가 종료 된 후에 10 개의 프로세스를 시작하고 데이터를 인쇄해야합니다. 하지만 대신 각 메시지마다 10 초를 기다려야합니다. 내가 틀린 곳?
'pcntl_wait'는 자식 프로세스가 상태를 반환 할 때까지 기다립니다. 당신의 아이는 10 초를 기다립니다. 부모는 자식이 퇴장 할 때까지 아무 것도하지 않을 것입니다 (posix_kill로하는 것). 성취하고자하는 것은 무엇입니까? –