This commit is contained in:
2023-08-25 09:37:59 +08:00
parent 6caa482f64
commit 5f7a63a2c0
2 changed files with 10 additions and 9 deletions
+6 -3
View File
@@ -26,6 +26,10 @@ class Pool implements PoolInterface
public function flush($name, $retain_number): void
{
if ($this->hasChannel($name)) {
if ($retain_number == 0) {
$this->close($name);
return;
}
$this->channel($name)->tailor($retain_number);
}
}
@@ -65,7 +69,7 @@ class Pool implements PoolInterface
throw new Exception('Channel is not exists.');
}
$channel = $this->_connections[$name];
if ($channel->isClose()) {
if ($channel == null || $channel->isClose()) {
$channel->reconnect();
}
return $channel;
@@ -189,8 +193,7 @@ class Pool implements PoolInterface
if ($channel === null) {
return;
}
$channel->tailor(0);
$channel->close();
$this->_connections[$name] = null;
}
+4 -6
View File
@@ -32,11 +32,7 @@ class PoolItem
*/
public function __construct(readonly public int $maxCreated, readonly public Closure|array $callback)
{
if (Coroutine::getCid() > -1) {
$this->_items = new Channel($this->maxCreated);
} else {
$this->_items = new SplQueue($this->maxCreated);
}
$this->reconnect();
}
@@ -57,8 +53,10 @@ class PoolItem
*/
public function reconnect(): void
{
if ($this->_items instanceof Channel && $this->_items->errCode == SWOOLE_CHANNEL_CLOSED) {
if (Coroutine::getCid() > -1) {
$this->_items = new Channel($this->maxCreated);
} else {
$this->_items = new SplQueue($this->maxCreated);
}
}