mysqli_connect和一个糟糕的主机名 - 奇怪的行为

时间:2016-09-28 01:09:47

标签: php mysql mysqli connect

我目前正在编写一个程序,允许用户在前端输入主机名,用户名,数据库和密码。在后端我使用mysqli_connect。我注意到如果用户输入了不正确的主机名或不存在的主机,我没有收到错误,但程序停止,我必须重新启动apache。我想避免这种情况,暂时我很难将'localhost'编码为主机,但我不想这样做。我在mysqli_connect的末尾使用了一个die语句,但它仍然停滞不前。

我的问题是:有没有办法将mysqls搜索主机限制为10秒或很短的时间?或者,在使用mysqli_connect之前,是否有一种验证或检查主机是否存在的好方法?

1 个答案:

答案 0 :(得分:1)

我认为您可能正在寻找MYSQLI_OPT_CONNECT_TIMEOUT选项。

此处方便记录:http://php.net/manual/en/mysqli.options.php

$mysqli = mysqli_init();
if (!$mysqli) {
    die('mysqli_init failed');
}
if (!$mysqli->options(MYSQLI_OPT_CONNECT_TIMEOUT, 5)) {
    die('Setting MYSQLI_OPT_CONNECT_TIMEOUT failed');
}
if (!$mysqli->real_connect('localhost', 'my_user', 'my_password', 'my_db')) {
    die('Connect Error (' . mysqli_connect_errno() . ') '
        . mysqli_connect_error());
}