ODBC 接続を使用して SQL Server 2005 に接続するコマンドライン PHP スクリプトがあります。odbc_exec() を使用して、処理に時間がかかる可能性があるストアド プロシージャを実行しますが、タイムアウトさせたくありません。
odbc_exec() のタイムアウトを設定する方法に関する PHP のドキュメントを見つけることができませんでした。デフォルトで無限に待機しますか?
ここでできることは限られています。PHP のデフォルトのスクリプト実行時間は 30 秒に設定されています。これを変更するには、set_time_limit()
関数 (マニュアルに記載されています) や、 を使用して実行時間を延長するini_set
など、さまざまな方法があります。odbc_setoption
//extend execution time
$num_minutes = 5;
ini_set('max_execution_time', (60*$num_minutes)); //set timeout to 5 minutes
php.ini ファイル内でこの設定を変更することもできます。ただし、これらはすべて、Apache サーバーが制御できる範囲内でしか制御できません。データベース自体にタイムアウトがある場合、個人的に設定した実行時間が長くなっても、呼び出しが中断されてエラーが返されます。
php.net によると、次を使用できます odbc_setoption()
。
$result = odbc_prepare($conn, $sql);
odbc_setoption($result, 2, 0, 30);// 30 seconds timeout
odbc_execute($result);
したがって、必要に応じて、タイムアウトをより大きな数に増やすことができます