昨天我和我的主人(godaddy)遇到了一个问题,他显然遇到了一个特定的mysql服务器问题...因为它一次完全没有佣金几个小时。
现在这导致我的网站根本无法加载 - 显示此错误:
[phpBB Debug] PHP Warning: in file /home/content/index.php on line 53: mysqli::mysqli() [mysqli.mysqli]: (HY000/2003): Can't connect to MySQL server on 'dbserver.com' (110)
Connect failed: Can't connect to MySQL server on 'dbserver.com' (110)
我猜它显示因为这个代码我有:
// PREPARE DB CONNECTION
$mysqli = new mysqli("dbserver.com", "username", "password", "dbname");
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
如果mysql崩溃,这告诉php完全停止。所以我想我需要做的就是删除“退出”功能,我很高兴去?
我想从理论上讲,为什么在如此多的教程中默认退出如何连接到mysql?如果数据库不可用,它会终止网站。
只是寻找那些比我更了解的人的想法,谢谢!
答案 0 :(得分:5)
请点这个:
printf("Connect failed: %s\n", mysqli_connect_error());
并将其替换为占位符页面,以告知人们发生了这种情况,您将在稍后返回。
header('Location: error_db.php');
答案 1 :(得分:1)
大多数程序员经常忽略向用户显示好的和漂亮的错误消息。这是因为以正确的方式做屁股真的很痛苦。
正如Jassica评论的那样,如果您的整个网站在没有数据库连接的情况下运行,您只需删除功能中的exit()
,该网站就可以了。
但是,我认为没有数据库连接的100%功能站点的可能性非常小。大多数网站将用户重定向到500-errorpage,告知用户出现了问题。通常提供联系信息,以便也可以通知合适的人员。 Twitter这样做,Facebook,Reddit等等也是如此。
你可以这样做:
$mysqli = new mysqli("dbserver.com", "username", "password", "table");
if (mysqli_connect_errno()) {
header("Location: error500.html");
exit();
}
或类似的东西。
答案 2 :(得分:1)
这应该可以解决问题。
function connect($u,$p,$db,$host) {
try {
$mysqli = new mysqli($host,$u,$p,$db);
$connected = true;
} catch (mysqli_sql_exception $e) {
throw $e;
}
}
try {
connect('username','password','database','host');
} catch (Exception $e) {
echo $e->errorMessage();
}