經過進一步調查,我提出了以下解決方案,請讓我知道如果你有一個更好的!
與參數-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
,所以默認處理程序也會運行。