正在寻找捕获和处理MySQL超时错误。现有代码:
$conn = mysqli_connect("localhost", "user", "pass", "db");
$conn->query('SET SESSION MAX_EXECUTION_TIME = 10'); // time in milliseconds
$sql = "SELECT COUNT(1) FROM table WHERE..."
$results = $conn->query($sql);
字符串
像下面这样的?
if ($results == false){
if ($conn->errno == 3024){
echo "too slow";
}else{
echo "unkown error";
}else{ \\carry on trucking
型
如何将$conn->query($sql);
Package 在IF语句中并仍然访问$results
变量?
1条答案
按热度按时间yfjy0ee71#
根据https://dev.mysql.com/doc/refman/8.0/en/optimizer-hints.html#optimizer-hints-execution-time,最大执行时间以毫秒为单位,而不是秒。
如果查询超时,则返回错误:
字符串
你必须检查mysqli抛出的异常,然后检查
$e->getCode()
看看是什么错误,应该是3024。回复您的评论:
下面是我在PHP 8.1.6中进行的一个测试。
型
注意参数的顺序与你的例子中显示的不同。参考文档。
型
输出量:
查询超时
请注意,由于PHP 8.1 mysqli默认抛出exceptions,这使您的代码清晰一致。如果您的PHP版本较低,您必须显式添加错误模式:
型