2011-03-27 5 views
2

私は長時間(24時間以上)実行するPHP CLIスクリプトをいくつか持っていますが、定期的にコミットしていますが、スクリプトがクラッシュしたことによる孤立したトランザクションに関する問題がありました。php-interbaseのデフォルトのトランザクション動作を変更しました

私の解決策は、トランザクションを次のように作成することでした。これは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()の最初の呼び出しは接続のデフォルトトランザクションを返しません。

私の質問は、デフォルトのトランザクションのトランザクション引数を設定できるかどうかです。セカンダリの質問ですが、これをやってみようとしている点を完全には忘れていますか?

ありがとうございました

答えて

0

デフォルト取引では対処しないでください。

はfolowsとして、あなたのトランザクションを定義します。

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

あなたのクエリを実行した後:

ibase_query($T, $SQL, $Params) 

か、& ibase_execute ibase_prepare使用することができます。

それた後、呼び出し

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

または

ibase_commit($T) // this commit work close transaction 
関連する問題