2

我有一些运行很长时间(超过 24 小时)的 PHP CLI 脚本,尽管它们会定期“提交”,但我在孤立事务方面遇到了一些问题——可能是由于脚本崩溃造成的。

我的解决方案是按如下方式创建事务 - 一年前我对此进行了研究,不太记得这些设置的确切原因,但它似乎解决了数据库的一些问题。

$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这一行导致了segmentation fault。在 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 回答