container->get(ActorManager::class); while (!$this->isStop()) { $read = json_decode($process->read(), true); if (is_null($read) || !isset($read['event'])) { continue; } switch ($read['event']) { case ActorState::MESSAGE: $actorManager->write($read['name'], $read['message']); break; case ActorState::CREATE: /** @var ActorInterface $actor */ $actor = $this->container->create($read['class']); $actorManager->addActor($actor); break; case ActorState::SHUTDOWN: $actorManager->closeActor($read['name']); break; } } } /** * @return $this */ public function onSigterm(): static { pcntl_signal(SIGTERM, function () { $this->onProcessStop(); }); return $this; } }