Create connections only on fill method
This commit is contained in:
parent
fe29e58f22
commit
f6449687b5
2 changed files with 60 additions and 53 deletions
33
app/init.php
33
app/init.php
|
@ -590,7 +590,8 @@ $register->set('pools', function () {
|
||||||
switch ($dsn->getScheme()) {
|
switch ($dsn->getScheme()) {
|
||||||
case 'mysql':
|
case 'mysql':
|
||||||
case 'mariadb':
|
case 'mariadb':
|
||||||
$resource = new PDOProxy(function() use ($dsnHost, $dsnPort, $dsnUser, $dsnPass, $dsnScheme) {
|
$resource = function () use ($dsnHost, $dsnPort, $dsnUser, $dsnPass, $dsnScheme) {
|
||||||
|
return new PDOProxy(function() use ($dsnHost, $dsnPort, $dsnUser, $dsnPass, $dsnScheme) {
|
||||||
return new PDO("mysql:host={$dsnHost};port={$dsnPort};dbname={$dsnScheme};charset=utf8mb4", $dsnUser, $dsnPass, array(
|
return new PDO("mysql:host={$dsnHost};port={$dsnPort};dbname={$dsnScheme};charset=utf8mb4", $dsnUser, $dsnPass, array(
|
||||||
PDO::ATTR_TIMEOUT => 3, // Seconds
|
PDO::ATTR_TIMEOUT => 3, // Seconds
|
||||||
PDO::ATTR_PERSISTENT => true,
|
PDO::ATTR_PERSISTENT => true,
|
||||||
|
@ -600,14 +601,19 @@ $register->set('pools', function () {
|
||||||
PDO::ATTR_STRINGIFY_FETCHES => true
|
PDO::ATTR_STRINGIFY_FETCHES => true
|
||||||
));
|
));
|
||||||
});
|
});
|
||||||
|
};
|
||||||
break;
|
break;
|
||||||
case 'redis':
|
case 'redis':
|
||||||
$resource = new Redis();
|
$resource = function() use ($dsnHost, $dsnPort, $dsnPass) {
|
||||||
$resource->pconnect($dsnHost, $dsnPort);
|
$redis = new Redis();
|
||||||
|
@$redis->pconnect($dsnHost, $dsnPort);
|
||||||
if($dsnPass) {
|
if($dsnPass) {
|
||||||
$resource->auth($dsnPass);
|
$redis->auth($dsnPass);
|
||||||
}
|
}
|
||||||
$resource->setOption(Redis::OPT_READ_TIMEOUT, -1);
|
$redis->setOption(Redis::OPT_READ_TIMEOUT, -1);
|
||||||
|
|
||||||
|
return $redis;
|
||||||
|
};
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -615,13 +621,15 @@ $register->set('pools', function () {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$pool = new Pool($name, 64, function () use ($type, $resource, $dsn) {
|
||||||
// Get Adapter
|
// Get Adapter
|
||||||
|
$adapter = null;
|
||||||
|
|
||||||
switch ($type) {
|
switch ($type) {
|
||||||
case 'database':
|
case 'database':
|
||||||
$adapter = match ($dsn->getScheme()) {
|
$adapter = match ($dsn->getScheme()) {
|
||||||
'mariadb' => new MariaDB($resource),
|
'mariadb' => new MariaDB($resource()),
|
||||||
'mysql' => new MySQL($resource),
|
'mysql' => new MySQL($resource()),
|
||||||
default => null
|
default => null
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -634,7 +642,7 @@ $register->set('pools', function () {
|
||||||
break;
|
break;
|
||||||
case 'cache':
|
case 'cache':
|
||||||
$adapter = match ($dsn->getScheme()) {
|
$adapter = match ($dsn->getScheme()) {
|
||||||
'redis' => new RedisCache($resource),
|
'redis' => new RedisCache($resource()),
|
||||||
default => null
|
default => null
|
||||||
};
|
};
|
||||||
break;
|
break;
|
||||||
|
@ -644,11 +652,6 @@ $register->set('pools', function () {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(is_null($adapter)) {
|
|
||||||
throw new Exception(Exception::GENERAL_SERVER_ERROR, "Server error: Missing adapter implementation.");
|
|
||||||
}
|
|
||||||
|
|
||||||
$pool = new Pool($name, 64, function () use ($adapter) {
|
|
||||||
return $adapter;
|
return $adapter;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -658,7 +661,11 @@ $register->set('pools', function () {
|
||||||
Config::setParam('pools-'.$key, $config);
|
Config::setParam('pools-'.$key, $config);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
$group->fill();
|
$group->fill();
|
||||||
|
} catch (\Throwable $th) {
|
||||||
|
Console::error('Connection failure: '.$th->getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
return $group;
|
return $group;
|
||||||
});
|
});
|
||||||
|
|
|
@ -78,7 +78,6 @@ $cli
|
||||||
Console::log('🟢 HTTPS force option is enabled');
|
Console::log('🟢 HTTPS force option is enabled');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$providerName = App::getEnv('_APP_LOGGING_PROVIDER', '');
|
$providerName = App::getEnv('_APP_LOGGING_PROVIDER', '');
|
||||||
$providerConfig = App::getEnv('_APP_LOGGING_CONFIG', '');
|
$providerConfig = App::getEnv('_APP_LOGGING_CONFIG', '');
|
||||||
|
|
||||||
|
@ -97,6 +96,7 @@ $cli
|
||||||
}
|
}
|
||||||
|
|
||||||
$pools = $register->get('pools'); /** @var \Utopia\Pools\Group $pools */
|
$pools = $register->get('pools'); /** @var \Utopia\Pools\Group $pools */
|
||||||
|
|
||||||
$configs = [
|
$configs = [
|
||||||
'Console.DB' => Config::getParam('pools-console'),
|
'Console.DB' => Config::getParam('pools-console'),
|
||||||
'Projects.DB' => Config::getParam('pools-database'),
|
'Projects.DB' => Config::getParam('pools-database'),
|
||||||
|
@ -104,9 +104,9 @@ $cli
|
||||||
|
|
||||||
foreach ($configs as $key => $config) {
|
foreach ($configs as $key => $config) {
|
||||||
foreach ($config as $database) {
|
foreach ($config as $database) {
|
||||||
|
try {
|
||||||
$adapter = $pools->get($database)->pop()->getResource();
|
$adapter = $pools->get($database)->pop()->getResource();
|
||||||
|
|
||||||
try {
|
|
||||||
if($adapter->ping()) {
|
if($adapter->ping()) {
|
||||||
Console::success('🟢 '.str_pad("{$key}({$database})", 50, '.').'connected');
|
Console::success('🟢 '.str_pad("{$key}({$database})", 50, '.').'connected');
|
||||||
} else {
|
} else {
|
||||||
|
@ -127,9 +127,9 @@ $cli
|
||||||
|
|
||||||
foreach ($configs as $key => $config) {
|
foreach ($configs as $key => $config) {
|
||||||
foreach ($config as $pool) {
|
foreach ($config as $pool) {
|
||||||
|
try {
|
||||||
$adapter = $pools->get($pool)->pop()->getResource();
|
$adapter = $pools->get($pool)->pop()->getResource();
|
||||||
|
|
||||||
try {
|
|
||||||
if($adapter->ping()) {
|
if($adapter->ping()) {
|
||||||
Console::success('🟢 '.str_pad("{$key}({$pool})", 50, '.').'connected');
|
Console::success('🟢 '.str_pad("{$key}({$pool})", 50, '.').'connected');
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in a new issue