gpt4 book ai didi

php - 如果主数据库已关闭,如何连接到辅助数据库(PHP)

转载 作者:搜寻专家 更新时间:2023-10-30 20:34:33 24 4
gpt4 key购买 nike

我希望有人能帮助我,我已经为此苦苦挣扎了 3 天。

这是我的情况,我正在用 php 制作一个网站,我有 2 台计算机作为带有 wampserver 的服务器...

主服务器是192.168.0.10

副服务器是192.168.0.12

还有一个虚拟机,我在其中尝试远程连接是否有效

我的网站托管在我的主服务器上,因此 conexion 查询是...

$conexion = mysqli_connect("localhost","root","","dbdaq");

它工作正常,我什至有 master 来控制服务器上的复制。

但我需要做的是,当主服务器关闭时,它需要尝试连接到辅助数据库上的数据库,所以我正在尝试使用代码...

$conexion = mysqli_connect("localhost","root","","dbdaq");


if (!$conexion){
$conexion = mysqli_connect("192.168.0.12","root","password","dbdaq");
}

但是当我手动关闭主服务器上的 mysql 服务时,它实际上并没有尝试使用其他服务器的数据库...

它一直给我这样的错误

警告:mysqli_connect():(HY000/2002):无法建立连接,因为目标机器主动拒绝它。在 C:\wamp64\www\PaginaV2\Pagina\PHP 和第 2 行的 JS\Procesoalumno.php

最佳答案

使用@ 来抑制错误消息是一个坏主意,也是一种不好的做法。更好的解决方案是将 mysqli 设置为在失败时抛出异常,并捕获异常。

您可以通过在建立连接之前添加以下行来将 mysqli 设置为抛出异常。

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

使用异常来抑制错误,如果需要它们进行特定处理或记录,您可以提取相关的错误消息和错误代码,这比抑制错误更清晰。

虽然它可能看起来更复杂,但这样做的原因是我们还测试了第二个连接(无论如何您都应该这样做,无论您如何如何做)- 我们测试了第二个connection 与我们测试第一个连接的方式相同,通过第一个 catch block 内的第二个 try/catch

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); // errors in MySQLi now throws exceptions

try {
$conexion = mysqli_connect("localhost","root","","dbdaq");
} catch (Exception $e) {
try {
$conexion = mysqli_connect("192.168.0.12","root","password","dbdaq");
} catch (Exception $e) {
echo "Connecting to both databases failed";
exit;
}
}

关于php - 如果主数据库已关闭,如何连接到辅助数据库(PHP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47403097/

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