This commit is contained in:
2021-05-20 18:34:03 +08:00
parent 4dd3c3607c
commit 3abbfc8e22
+8 -8
View File
@@ -5,7 +5,6 @@ namespace Snowflake\Abstracts;
use Exception; use Exception;
use HttpServer\Http\Context;
use JetBrains\PhpStorm\Pure; use JetBrains\PhpStorm\Pure;
use Snowflake\Exception\ConfigException; use Snowflake\Exception\ConfigException;
use Swoole\Coroutine; use Swoole\Coroutine;
@@ -173,13 +172,14 @@ abstract class Pool extends Component
if (Coroutine::getCid() === -1) { if (Coroutine::getCid() === -1) {
return $this->createClient($name, $callback); return $this->createClient($name, $callback);
} }
$channel = static::$_items[$name] ?? new Channel($this->max);
if (!isset(static::$_items[$name])) { if (!isset(static::$_items[$name])) {
static::$_items[$name] = new Channel($this->max); static::$_items[$name] = $channel;
} }
if (static::$_items[$name]->isEmpty()) { if ($channel->isEmpty()) {
$this->createByCallback($name, $callback); $this->createByCallback($channel, $name, $callback);
} }
$connection = static::$_items[$name]->pop(); $connection = $channel->pop();
if (!$this->checkCanUse($name, $connection)) { if (!$this->checkCanUse($name, $connection)) {
return $this->createClient($name, $callback); return $this->createClient($name, $callback);
} else { } else {
@@ -189,16 +189,16 @@ abstract class Pool extends Component
/** /**
* @param $channel
* @param $name * @param $name
* @param mixed $callback * @param mixed $callback
* @throws Exception
*/ */
private function createByCallback($name, mixed $callback): void private function createByCallback(Channel $channel, $name, mixed $callback): void
{ {
if ($this->creates === -1 && !is_callable($callback)) { if ($this->creates === -1 && !is_callable($callback)) {
$this->creates = Timer::tick(1000, [$this, 'Heartbeat_detection']); $this->creates = Timer::tick(1000, [$this, 'Heartbeat_detection']);
} }
static::$_items[$name]->push($this->createClient($name, $callback)); $channel->push($this->createClient($name, $callback));
} }