diff --git a/System/Abstracts/Pool.php b/System/Abstracts/Pool.php index c97abf22..ccbb4b93 100644 --- a/System/Abstracts/Pool.php +++ b/System/Abstracts/Pool.php @@ -26,7 +26,7 @@ abstract class Pool extends Component /** @var Channel[] */ private array $_items = []; - protected int $max = 60; + public int $max = 60; use Timeout; diff --git a/System/Pool/ObjectPool.php b/System/Pool/ObjectPool.php index 463326b0..bcd8d42b 100644 --- a/System/Pool/ObjectPool.php +++ b/System/Pool/ObjectPool.php @@ -19,23 +19,7 @@ use Swoole\Coroutine; class ObjectPool extends \Snowflake\Abstracts\Pool { - private array $_waitRecover = []; - - - /** - * ObjectPool constructor. - * @param array $config - * @throws ComponentException - * @throws Exception - */ - public function __construct($config = []) - { - $this->max = 5000; - - listen(Event::SYSTEM_RESOURCE_RELEASES, [$this, 'destruct']); - - parent::__construct($config); - } + public int $max = 5000; /** @@ -49,7 +33,11 @@ class ObjectPool extends \Snowflake\Abstracts\Pool if (is_object($config)) { return $config; } - return $this->getFromChannel($name = md5($config), [$config, $construct]); + $object = $this->getFromChannel($name = md5($config), [$config, $construct]); + if (method_exists($object, 'clean')) { + $object->clean(); + } + return $object; } @@ -70,35 +58,7 @@ class ObjectPool extends \Snowflake\Abstracts\Pool */ public function release(string $name, mixed $object) { - if (!isset($this->_waitRecover[$name])) { - $this->_waitRecover[$name] = []; - } - $this->_waitRecover[$name][] = $object; - } - - - /** - * 清理等待回收的对象 - */ - public function destruct() - { - $this->async_create(function ($scope) { - if (empty($scope->_waitRecover)) { - return; - } - foreach ($scope->_waitRecover as $name => $value) { - if (empty($value)) { - continue; - } - foreach ($value as $object) { - if (method_exists($object, 'clean')) { - $object->clean(); - } - $scope->push($name, $object); - } - unset($scope->_waitRecover[$name]); - } - }, $this); + $this->push($name, $object); } }