qqq
This commit is contained in:
@@ -26,6 +26,10 @@ class Pool implements PoolInterface
|
|||||||
public function flush($name, $retain_number): void
|
public function flush($name, $retain_number): void
|
||||||
{
|
{
|
||||||
if ($this->hasChannel($name)) {
|
if ($this->hasChannel($name)) {
|
||||||
|
if ($retain_number == 0) {
|
||||||
|
$this->close($name);
|
||||||
|
return;
|
||||||
|
}
|
||||||
$this->channel($name)->tailor($retain_number);
|
$this->channel($name)->tailor($retain_number);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -65,7 +69,7 @@ class Pool implements PoolInterface
|
|||||||
throw new Exception('Channel is not exists.');
|
throw new Exception('Channel is not exists.');
|
||||||
}
|
}
|
||||||
$channel = $this->_connections[$name];
|
$channel = $this->_connections[$name];
|
||||||
if ($channel->isClose()) {
|
if ($channel == null || $channel->isClose()) {
|
||||||
$channel->reconnect();
|
$channel->reconnect();
|
||||||
}
|
}
|
||||||
return $channel;
|
return $channel;
|
||||||
@@ -189,8 +193,7 @@ class Pool implements PoolInterface
|
|||||||
if ($channel === null) {
|
if ($channel === null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
$channel->tailor(0);
|
$this->_connections[$name] = null;
|
||||||
$channel->close();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+4
-6
@@ -32,11 +32,7 @@ class PoolItem
|
|||||||
*/
|
*/
|
||||||
public function __construct(readonly public int $maxCreated, readonly public Closure|array $callback)
|
public function __construct(readonly public int $maxCreated, readonly public Closure|array $callback)
|
||||||
{
|
{
|
||||||
if (Coroutine::getCid() > -1) {
|
$this->reconnect();
|
||||||
$this->_items = new Channel($this->maxCreated);
|
|
||||||
} else {
|
|
||||||
$this->_items = new SplQueue($this->maxCreated);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -57,8 +53,10 @@ class PoolItem
|
|||||||
*/
|
*/
|
||||||
public function reconnect(): void
|
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);
|
$this->_items = new Channel($this->maxCreated);
|
||||||
|
} else {
|
||||||
|
$this->_items = new SplQueue($this->maxCreated);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user