gpt4 book ai didi

PHP MySQL 连接错误 - 实现重试逻辑

转载 作者:行者123 更新时间:2023-11-30 00:19:10 24 4
gpt4 key购买 nike

我们看到很多 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;
}

最佳答案

如果跟随那些已经发明了轮子的人,他们说每一次不必要的数据库连接尝试都可能会遇到性能问题,这也是他们建议您只需要一个数据库实例的原因之一,我会告诉您做不要这样做,但是,问题被提出了。

虽然我以前从未这样做过,但在我看来,你可以递归地调用你的函数,直到建立连接

public function connect_to_mysqldb () { 
try
{
$this->conn = mysqli_connect('us-cdbr-azure-west-a.cloudapp.net','xxxxx','password', 'dbname');
}
catch (DbException $e) {
// write into logs maybe?
$this->connect_to_mysqldb();
}
// Check connection (maybe unreachable because of the catch block?)
if (mysqli_connect_errno($this->conn ))
{
$this->connect_to_mysqldb();
}
return true;
}

因此,当您的连接出现错误时,该方法将调用自身并仅在跳过 catchif block 时返回 (true)(连接为成立)

关于PHP MySQL 连接错误 - 实现重试逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23381010/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com