我目前正在编写一个程序,允许用户在前端输入主机名,用户名,数据库和密码。在后端我使用mysqli_connect。我注意到如果用户输入了不正确的主机名或不存在的主机,我没有收到错误,但程序停止,我必须重新启动apache。我想避免这种情况,暂时我很难将'localhost'编码为主机,但我不想这样做。我在mysqli_connect的末尾使用了一个die语句,但它仍然停滞不前。
我的问题是:有没有办法将mysqls搜索主机限制为10秒或很短的时间?或者,在使用mysqli_connect之前,是否有一种验证或检查主机是否存在的好方法?
答案 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());
}