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

标签 php mysql azure

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

相关文章:

php - 使动态表单与我的后端数据库一起使用

c# - 使用类库访问 Windows Azure 存储

php - 如何使用 moodle 为管理端和前端设置不同的 css?

javascript - 如何在css中设计图像的多个时间顺时针旋转

PHP 错误 : No database selected (Hostgator. com)

php - 消息系统。多个收件人,正在检索数据。最佳实践

php - Laravel 4 高级在哪里 - 未知专栏

asp.net-mvc - 如何在 Azure WebApps .net core 上的 appstart 处查看依赖关系问题

php - 无法将 Bitnami Docker Prestashop 部署到适用于 Linux 容器的 Azure Web 应用程序

php - 代码点火器 4 : Autoload Library