From 30c460c618f428bc99629bcdf87eef3c8605cdd3 Mon Sep 17 00:00:00 2001 From: "as2252258@163.com" Date: Sat, 20 Mar 2021 03:15:58 +0800 Subject: [PATCH] modify --- System/Process/CrontabProcess.php | 35 ++++++++++++++++++++++--------- 1 file changed, 25 insertions(+), 10 deletions(-) diff --git a/System/Process/CrontabProcess.php b/System/Process/CrontabProcess.php index f00d2bee..47c05f14 100644 --- a/System/Process/CrontabProcess.php +++ b/System/Process/CrontabProcess.php @@ -24,6 +24,10 @@ use Swoole\Timer; class CrontabProcess extends Process { + + private Channel $channel; + + /** @var Crontab[] $names */ public array $names = []; @@ -33,18 +37,29 @@ class CrontabProcess extends Process */ public function onHandler(\Swoole\Process $process): void { + $this->channel = new Channel(1000); + Coroutine::create(function () { + $this->readByCha(); + }); while (true) { - try { - $content = $process->read(); - $_content = json_decode($content, true); - if (is_null($_content)) { - $this->jobDelivery($content); - } else { - $this->otherAction($_content); - } - } catch (\Throwable $exception) { - $this->application->error($exception->getMessage()); + $this->channel->push($process->read()); + } + } + + + private function readByCha() + { + try { + $content = $this->channel->pop(-1); + + $_content = json_decode($content, true); + if (is_null($_content)) { + $this->jobDelivery($content); + } else { + $this->otherAction($_content); } + } catch (\Throwable $exception) { + $this->application->error($exception->getMessage()); } }