[英]Yii2/PHP: Check connection to MySQL and PostgreSQL
启动我的Yii2 / PHP应用程序时,如何检查/等待数据库启动?
目前使用MySQL我使用:
$time = time();
$ok = false;
do {
try {
$pdo = new PDO($dsn,$username,$password);
if ($pdo->query("SELECT 1 FROM INFORMATION_SCHEMA.SCHEMATA"))
$ok=true;
} catch (\Exception $e) {
sleep(1);
}
} while (!$ok && time()<$time+30);
现在我想让我的应用程序与MySQL和PostgreSQL一起运行。
但SELECT 1 FROM INFORMATION_SCHEMA.SCHEMATA
在PostgreSQL中不起作用。
是否有一个SQL语句(使用PDO数据库连接)可以在两个数据库系统上运行,以检查数据库是否已启动并正在运行?
Yii2具有验证连接是否存在的属性,实际上没有必要为此创建脚本,因为该框架具有为其支持的数据库实现的抽象( $ isActive属性 )。
$ isActive public read-only property是否建立了DB连接
public boolean getIsActive()
您可以通过以下方式检查default controller
:
<?php
class DefaultController extends Controller
{
public function init()
{
if (!Yii::$app->db->isActive) {
// The connection does not exist.
}
parent::init();
}
}
除非有非常具体的要求,否则强制等待连接到数据库不是好的做法。 与数据库的连接的可用性必须是应用程序启动的强制要求,并且应用程序不应“等待”数据库可用。
有些方法可以有序地或有特定的要求在docker中运行容器,这个链接可以为您提供更好的选择,而不是将其委托给应用程序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.