2

長時間 (24 時間以上) 実行される PHP CLI スクリプトがいくつかあります。それらは通常の「コミット」を行いますが、スクリプトのクラッシュが原因で、孤立したトランザクションに問題が発生した可能性があります。

私の解決策は、次のようにトランザクションを作成することでした。これを調査したのは 1 年前であり、これらの設定の正確な理由をよく思い出せませんでしたが、データベースに関するいくつかの問題を解決したようです。

$dbh = ibase_connect($dbhost, $dbuser, $dbpass); $trans = ibase_trans(IBASE_WRITE+IBASE_COMMITTED+IBASE_REC_VERSION+IBASE_WAIT,$dbh);

PHP 5.3.5 にアップグレードしたところ、ibase_trans 行がセグメンテーション違反を引き起こしていることがわかりました。php ibase_trans ページには、次の注意事項があります。

「この関数の動作は PHP 5.0.0 で変更されました。ibase_trans() への最初の呼び出しは、接続のデフォルトのトランザクションを返しません。」

したがって、私の質問は、デフォルトのトランザクションのトランザクション引数を設定できるかどうかです...二次的な質問ですが、とにかくこれをしようとする点が完全に欠けているかどうか!

ありがとう

4

1 に答える 1

0

デフォルトのトランザクションを使用しないでください。

トランザクションを次のように定義します。

$T = ibase_trans($params, $database);

クエリを実行した後:

 ibase_query($T, $SQL, $Params)

または、ibase_prepare と ibase_execute を使用することもできます。

その後、電話

ibase_commit_ret($T); // this mentain transaction active

また

ibase_commit($T) // this commit work close transaction
于 2012-09-29T14:00:17.950 に答える