chore: sync repository snapshot
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
<?php
|
||||
|
||||
function env_value(string $key, string $default = ''): string
|
||||
{
|
||||
$value = getenv($key);
|
||||
if ($value !== false && $value !== '') {
|
||||
return $value;
|
||||
}
|
||||
|
||||
static $fileVars = null;
|
||||
if ($fileVars === null) {
|
||||
$fileVars = is_file(__DIR__.'/../.env')
|
||||
? parse_ini_file(__DIR__.'/../.env', false, INI_SCANNER_RAW)
|
||||
: [];
|
||||
}
|
||||
|
||||
return isset($fileVars[$key]) && $fileVars[$key] !== ''
|
||||
? (string) $fileVars[$key]
|
||||
: $default;
|
||||
}
|
||||
|
||||
$host = env_value('DB_HOST', '127.0.0.1');
|
||||
$port = env_value('DB_PORT', '3306');
|
||||
$database = env_value('DB_DATABASE', 'spbu_baru');
|
||||
$username = env_value('DB_USERNAME', 'root');
|
||||
$password = env_value('DB_PASSWORD', '');
|
||||
$dsn = "mysql:host={$host};port={$port};dbname={$database};charset=utf8mb4";
|
||||
|
||||
echo "Waiting for database at {$host}:{$port}...\n";
|
||||
|
||||
for ($attempt = 1; $attempt <= 30; $attempt++) {
|
||||
try {
|
||||
new PDO($dsn, $username, $password, [
|
||||
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
||||
PDO::ATTR_TIMEOUT => 3,
|
||||
]);
|
||||
|
||||
echo "Database connection OK.\n";
|
||||
exit(0);
|
||||
} catch (PDOException $exception) {
|
||||
if ($attempt === 30) {
|
||||
fwrite(STDERR, "Database unreachable after 30 attempts: {$exception->getMessage()}\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
sleep(2);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user