enableSwooleCoroutine) { Process::signal(SIGTERM | SIGKILL, function ($signo) use ($process) { $this->waiteExit($process); }); } else { go(function () use ($process) { $data = Coroutine::waitSignal(SIGTERM | SIGKILL, -1); if ($data) { $this->waiteExit($process); } }); } } public function isWorking(): bool { return false; } /** * */ private function waiteExit(Process $process): void { while ($this->isWorking()) { $this->sleep(); } $process->exit(0); } /** * */ private function sleep(): void { if ($this->enableSwooleCoroutine) { Coroutine::sleep(0.1); } else { usleep(100); } } }