PHP odbc连接超时报告

PHP odbc连接超时报告

问题描述:

我正在使用PHP将ODBC创建为MS SQL Server 2012数据库。我的查询结果未进入,因为odbc_exec命令有自动超时。我已经改变了我的代码(现在运转),以PHP odbc连接超时报告

$myQuery = odbc_prepare($myConnection, $mySQLQuery); 
odbc_setoption($myQuery, 2, 0, 6000); // 100 minute timeout 
odbc_execute($myQuery); 

为每this answer建议。我想知道如何判断此查询是否超时,以便我可以将其报告为错误或类似的内容。

经过进一步调查,我提出了以下解决方案,请让我知道如果你有一个更好的!

与参数-d display_errors命令提示符下运行我的程序给了警告:

SQL error: [Microsoft][ODBC Driver 13 for SQL Server]Query timeout expired, SQL state S1T00 in SQLExecute in myPHPfile.php on line 31

从这里,我使用的基本想法来自this answer以及this技术来创建自己的错误处理程序,并做一些事情特别当查询超时

function myErrorHandler($errno, $errstr, $errfile, $errline) 
{ 
    if (strpos($errstr, "Query timeout expired") !== false && $errno = E_WARNING){ 
     # If there is a warning with text containing "Query timeout expired" 
     # Do your handling here 
    } 

    # Execute PHP internal error handler as well 
    return false; 
} 

set_error_handler("myErrorHandler"); 

我搜索的字符串为“查询超时过期”,因为很可能还有其他$errstr消息,这取决于O分类如下在ODBC中;你可能不得不摆弄这个让它为你工作。我在我的自定义错误处理程序中返回了false,所以默认处理程序也会运行。