PHP-InterBaseのデフォルトのトランザクション動作を変更しました
質問
私は長い間実行されるいくつかのPHP CLIスクリプトを持っています(24時間プラス)、彼らは普通のコミットのコミットの孤立的なトランザクションに関する問題をいくつか持っていました - おそらくスクリプトがクラッシュすることによって引き起こされました。
私の解決策は、次のように取引を作成することでした - 私がこれを研究した年頃で、これらの設定の正確な理由をかなり覚えているが、データベースに関するいくつかの問題を解決するように思われる。
$ DBH= IBASE_CONNECT($ DBHOST、$ DBUSER、$ DBPASS)。 $ TRANS= IBASE_TRANS(IBASE_REC_VERSION + IBASE_REC_VERSION + IBASE_WAIT、$ DBH);
はPHP 5.3.5にアップグレードされ、IBASE_TRANS LINEがセグメンテーション障害を引き起こすことがわかりました。 PHP IBASE_TRANSページではメモがあります:
"この関数の動作はPHP 5.0.0で変更されました。ibase_trans()の最初の呼び出しは接続のデフォルトのトランザクションを返しません。"
だから私の質問は、私がデフォルトのトランザクションのトランザクション引数を設定できるかどうかです。
ありがとう
解決
デフォルトのトランザクションでは機能しないでください。
トランザクションをPolorsとして定義する:
$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
. 所属していません StackOverflow