Я пытаюсь использовать pcntl
extetntion для PHP
для запуска некоторых методов моего класса CLI
в новом потоке. Я написал небольшой метод испытаний:Как начинать и заканчивать новые 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). Чего ты хочешь достичь? –