2016-07-07 34 views
1

PHPを使用してODBCをMS SQL Server 2012データベースにしています。 odbc_execコマンドの自動タイムアウトがあるため、クエリ結果が表示されませんでした。 this answerの提案どおりPHP ODBC接続タイムアウトレポート

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

に私は私のコードを変更している(そして、それは今働いています)。私は、このクエリがタイムアウトするかどうかをどのようにして知ることができるのだろうかと疑問に思っているので、エラーやそのようなものとして報告することができます。

答えて

0

さらに調査すると、私は以下の解決策を思いつきました。より良いものがあれば教えてください!私は自分のエラーハンドラを作成して、何かをするthis answerなどthis技術から基本的な考え方を使用し、ここから

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

:引数-d display_errorsでコマンド・プロンプトで私のプログラムを実行する

警告を与えました特別

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を依存し、「クエリのタイムアウトが期限切れ」の文字列を検索n ODBC。あなたはそれをあなたのために働かせるためにこれを弄ばなければならないかもしれません。私はfalseを自分のカスタムエラーハンドラに戻したので、デフォルトのハンドラも実行されます。

関連する問題