变更
This commit is contained in:
@@ -99,15 +99,11 @@ class Connection extends Component
|
|||||||
if (!$this->pool->hasChannel($config['cds'])) {
|
if (!$this->pool->hasChannel($config['cds'])) {
|
||||||
$this->pool->initConnections($config['cds'], $config['pool']['max']);
|
$this->pool->initConnections($config['cds'], $config['pool']['max']);
|
||||||
}
|
}
|
||||||
if (Context::hasContext($config['cds'])) {
|
if (!Context::hasContext($config['cds'])) {
|
||||||
|
return Context::setContext($config['cds'], $this->pool->get($config['cds'], $this->generate($config)));
|
||||||
|
} else {
|
||||||
return Context::getContext($config['cds']);
|
return Context::getContext($config['cds']);
|
||||||
}
|
}
|
||||||
if ($this->pool->hasItem($config['cds'])) {
|
|
||||||
$connect = $this->pool->get($config['cds']);
|
|
||||||
} else {
|
|
||||||
$connect = $this->generate($config);
|
|
||||||
}
|
|
||||||
return Context::setContext($config['cds'], $connect);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -115,8 +111,9 @@ class Connection extends Component
|
|||||||
* @param array $config
|
* @param array $config
|
||||||
* @return Closure
|
* @return Closure
|
||||||
*/
|
*/
|
||||||
public function generate(array $config): \PDO
|
public function generate(array $config): Closure
|
||||||
{
|
{
|
||||||
|
return static function () use ($config) {
|
||||||
Kiri::getDi()->get(Kiri\Error\StdoutLoggerInterface::class)->alert('create database connect(' . $config['cds'] . ')');
|
Kiri::getDi()->get(Kiri\Error\StdoutLoggerInterface::class)->alert('create database connect(' . $config['cds'] . ')');
|
||||||
|
|
||||||
$link = new \PDO('mysql:dbname=' . $config['dbname'] . ';host=' . $config['cds'], $config['username'], $config['password'], [
|
$link = new \PDO('mysql:dbname=' . $config['dbname'] . ';host=' . $config['cds'], $config['username'], $config['password'], [
|
||||||
@@ -136,6 +133,7 @@ class Connection extends Component
|
|||||||
$link->beginTransaction();
|
$link->beginTransaction();
|
||||||
}
|
}
|
||||||
return $link;
|
return $link;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -155,9 +155,13 @@ class Pool extends Component
|
|||||||
* @throws ConfigException
|
* @throws ConfigException
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
public function get($name): mixed
|
public function get($name, $callback): mixed
|
||||||
{
|
{
|
||||||
return $this->channel($name)->pop();
|
$channel = $this->channel($name);
|
||||||
|
if (!$channel->isEmpty()) {
|
||||||
|
return $channel->pop();
|
||||||
|
}
|
||||||
|
return $callback();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user