更改了PHP-InterBase默认事务行为
题
我有一些php cli脚本长时间运行(24小时加),虽然他们做了常规'提交我对孤立事务有一些问题 - 可能是由脚本崩溃的脚本引起的。
我的解决方案是为了创建交易,如下所示 - 这是一年前,我研究了这个,不能完全记住这些设置的精确原因,但似乎可以解决数据库的一些问题。
$ dbh= ibase_connect($ dbhost,$ dbuser,$ dbpass); $ trans= ibase_trans(ibase_write + ibase_commited + ibase_rec_version + ibase_wait,$ dbh);
现在已升级到PHP 5.3.5,发现IBASE_TRANS线导致分段错误。在PHP IBASE_TRANS页面上有一个注释:
“PHP 5.0.0中此功能的行为已更改。对IBASE_TRANS()的第一个调用将不会返回连接的默认事务。” 所以我的问题是我是否可以为默认事务设置事务参数......辅助问题,无论我是否完全错过了尝试这样做!
感谢
解决方案
您不应该使用默认事务。
将您的交易定义为叶子:
$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