diff --git a/Abstracts/AsyncServer.php b/Abstracts/AsyncServer.php index 8f02fa9..9bee672 100644 --- a/Abstracts/AsyncServer.php +++ b/Abstracts/AsyncServer.php @@ -71,7 +71,9 @@ class AsyncServer extends Component implements ServerInterface * @param array $service * @param int $daemon * @return array + * @throws ContainerExceptionInterface * @throws NotFindClassException + * @throws NotFoundExceptionInterface */ private function createBaseServer(array $service, int $daemon = 0): array { diff --git a/Processes/AbstractProcess.php b/Processes/AbstractProcess.php index 681656f..fdee087 100644 --- a/Processes/AbstractProcess.php +++ b/Processes/AbstractProcess.php @@ -125,6 +125,13 @@ abstract class AbstractProcess implements OnProcessInterface { $this->process = $process; if ($this->enable_coroutine) { + Coroutine::set([ + 'enable_deadlock_check' => false, + 'deadlock_check_disable_trace' => false, + 'exit_condition' => function () { + return Coroutine::stats()['coroutine_num'] === 0; + } + ]); Coroutine::create(fn () => $this->coroutineWaitSignal()); } else { pcntl_signal(SIGTERM, [$this, 'pointWaitSignal']); diff --git a/Processes/TraitProcess.php b/Processes/TraitProcess.php index d53035c..1fb16af 100644 --- a/Processes/TraitProcess.php +++ b/Processes/TraitProcess.php @@ -48,7 +48,7 @@ trait TraitProcess private function genProcess(AbstractProcess $name): Process { return new Process(function (Process $process) use ($name) { - $process->name('[' . \config('id', 'system-service') . '].' . $name->getName()); + $process->name('[' . \config('id', 'system-service') . '].' . $name->getName()) . '.' . $process->pid; $name->onShutdown($process)->process($process); }, $name->getRedirectStdinAndStdout(),