diff --git a/kiri-engine/Pool/Pool.php b/kiri-engine/Pool/Pool.php index fa33f5b9..c07606d0 100644 --- a/kiri-engine/Pool/Pool.php +++ b/kiri-engine/Pool/Pool.php @@ -9,8 +9,11 @@ use Exception; use Kiri\Abstracts\Component; use Kiri\Abstracts\Config; use Kiri\Abstracts\CoordinatorManager; +use Kiri\Annotation\Inject; use Kiri\Context; use Kiri\Exception\ConfigException; +use Kiri\Server\Abstracts\StatusEnum; +use Kiri\Server\WorkerStatus; use Swoole\Coroutine\Channel; @@ -26,6 +29,14 @@ class Pool extends Component public int $max = 60; + + /** + * @var WorkerStatus + */ + #[Inject(WorkerStatus::class)] + public WorkerStatus $status; + + use Alias; @@ -69,6 +80,11 @@ class Pool extends Component return [0, 0]; } + if ($this->status->is(StatusEnum::EXIT)) { + $channel->close(); + return [0, 0]; + } + $success = 0; $lists = []; $count = $channel->length(); diff --git a/kiri-engine/Pool/PoolQueue.php b/kiri-engine/Pool/PoolQueue.php index f0e38d36..0307f25c 100644 --- a/kiri-engine/Pool/PoolQueue.php +++ b/kiri-engine/Pool/PoolQueue.php @@ -37,7 +37,10 @@ class PoolQueue implements QueueInterface */ public function push(mixed $data, float $timeout = -1): bool { - return $this->queue->push($data, $timeout); + if (!$this->isClose()) { + return $this->queue->push($data, $timeout); + } + return false; }