qqq
This commit is contained in:
@@ -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
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user