2017-11-15 27 views
1

私はこれは私がこの要求があまりにから見つかりませ固体答えPHP oci timeout?

Run a sql query with a timeout in PHP or How in PHP, to stop a sql query once already begun?

で前に尋ねたが、バック11内のすべての方法だったされ、クエリ

$statement = oci_parse($conn, $query); 
oci_execute($statement); // timeout if this takes over 5 minutes 

にタイムアウトを設定したいと思います昨年 https://bugs.php.net/bug.php?id=73038

答えて

3

PHP OCI driverはinterfaで(PDO::ATTR_TIMEOUTを経由して)、クエリのタイムアウトをサポートしていません。 Oracleライブラリーを使用してください。したがって、これを達成するための直接的なユーザーランド手段はありません。

これを行う標準的な方法は、それ自体がタイムアウトを持つ別のプロセスを実行することです。あなたはそのようにそれについて行くことがあります

// oci8-exec.php 
set_time_limit(300); // 5 minutes 
$conn = getDatabaseConnection(); 
$stmt = oci_parse($conn, $_SERVER['argv'][1]); 
oci_execute($stmt); 
oci_fetch_all($stmt, $rows); 
var_export($rows); 

は、あなたのコード内で行います。

$rows = shell_exec('oci8-exec.php "select * from foo"'); 

は明らかにあなたは、この生産できるようにするまでになど、エラー処理、終了コードのチェックを、持っている必要があります。