最大执行时间(php / mysqli)错误处理程序

时间:2015-02-04 15:33:35

标签: php mysqli

我不打算在此时更改最长执行时间,(就像搜索框中的每个线程一样),我只想错误处理该行,但它对我不起作用。

这是我的代码:

$multiSupplierResult    = mysqli_query($con, $multiSupplierQuery) or trigger_error("Query Failed! SQL: $multiSupplierResult");

我在运行查询的行数过多时遇到此错误:

Fatal error: Maximum execution time of 30 seconds exceeded in blah blah on line blah blah....

为什么我的错误处理程序不起作用?

更新

我在另一个帖子中找到了这个代码,效果很好:

register_shutdown_function('shutdownFunction');

function shutDownFunction() { 
    $error = error_get_last();
    if ($error['type'] == 1) {
        echo "<pre>";
        print "blah blah blah";
        echo "</pre>";     
    } 
}

但是,如果用户搜索的部分太多,并且查询时间超过30秒,他们会看到此blah blah blah消息,但他们仍然会看到Fatal Error消息。如何完全隐藏该消息?

2 个答案:

答案 0 :(得分:2)

Fatal error是一个例外。

您的代码行使用二进制比较,因此会被跳过。

对于任何正常的异常,您需要一个try {} catch() {}块来捕获异常。

不幸的是,致命错误是一种特殊情况。 More information here

答案 1 :(得分:0)

错误处理不起作用,因为它不是导致错误的查询。 它只需要很长时间来执行命令并检索结果。 您可以更改最长执行时间,以便有更多时间完成命令。

你可以用这个: ini_set('max_execution_time', numberInSeconds);