PHP OCI:如何回滚任何打开的连接

时间:2012-09-28 10:41:55

标签: php oracle oci

我正在使用PHP的OCI库与Oracle进行通信。在每个函数中都有一个try ... catch来捕获任何异常。在catch部分,我调用自己的错误处理函数。

当发生异常时,我想回滚所有打开的连接到oracle,最好是在我的错误处理函数中。这可能吗?

由于

# #

有点hacky,但这就是我解决问题的方法。

在连接到Oracle的connect()函数中,我输入了以下代码:

if(!isset($GLOBALS['OPEN_CONNECTIONS'])){
  $GLOBALS['OPEN_CONNECTIONS'] = array();
  $GLOBALS['OPEN_CONNECTIONS'][] = $this;
}else{
  $GLOBALS['OPEN_CONNECTIONS'][] = $this;
}

这将存储全局范围内所有打开的连接的列表。

在我的错误处理功能中,我这样做:

//rollback all open connections
if(isset($GLOBALS['OPEN_CONNECTIONS'])){
  foreach($GLOBALS['OPEN_CONNECTIONS'] as $con){
    $con->rollback();
  }
}

这样,我可以回滚所有打开的连接,而不必将它们传递给我的错误处理程序。

0 个答案:

没有答案