【发布时间】:2014-06-16 08:32:39
【问题描述】:
我们看到很多 PHP 和 MYSQL 连接失败问题。有人建议,如果数据库连接不成功,我们应该构建重试逻辑。我已经粘贴了下面的代码和错误信息。
谁能建议在这段代码中实现重试逻辑的最佳方法是什么?任何处理此问题的代码示例?
PHP 警告:mysqli_connect(): [2002] 连接尝试失败,因为连接方在一段时间后没有正确响应,或建立连接(尝试通过 tcp://us-cdbr-azure-west 连接-a.cloudapp.net:3306) 在 D:\home\site\wwwroot\xdfdy.php 第 232 行
PHP 警告:mysqli_connect(): (HY000/2002): 连接尝试失败,因为连接方在一段时间后没有正确响应,或者连接失败,因为连接的主机没有响应。
public function connect_to_mysqldb () {
try
{
$this->conn = mysqli_connect('us-cdbr-azure-west-a.cloudapp.net','xxxxx','password', 'dbname');
}
catch (DbException $e) {
return false;
}
// Check connection
if (mysqli_connect_errno($this->conn ))
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
return false;
}
return true;
}
【问题讨论】:
-
除了担心重试逻辑之外,您可能首先要专注于找出为什么首先发生这些错误,为什么数据库连接超时是不是很频繁
-
@Hanky웃Panky 这些错误一定会发生,不是因为代码有问题,而是因为共享基础设施。这些是暂时性错误,应用程序的架构应该能够优雅地处理这些错误。