更改了php-interbase默认事务行为

时间:2011-03-27 20:33:02

标签: php firebird interbase

我有一些PHP CLI脚本运行了很长时间(24小时以上),虽然他们经常'提交'我有一些孤立事务的问题 - 可能是由脚本崩溃引起的。

我的解决方案是按如下方式创建事务 - 一年前我研究了这个并且不太清楚这些设置的确切原因但它似乎解决了数据库的一些问题。

$ 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()将不会返回连接的默认事务。”

所以我的问题是我是否可以为默认事务设置事务参数...第二个问题,我是否完全没有尝试这样做的重点!

由于

1 个答案:

答案 0 :(得分: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