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

PHP OCI:如何回滚任何打开的连接,php,oracle,oracle-call-interface,Php,Oracle,Oracle Call Interface,我正在使用PHP的OCI库与Oracle通信。在每个函数中都有一个try…catch来捕获任何异常。在catch部分,我调用自己的错误处理函数 当发生异常时,我希望回滚到oracle的所有打开的连接,最好是在我的错误处理函数中。这可能吗 谢谢 # # 这有点老套,但以下是我解决问题的方法 在连接到Oracle的connect()函数中,我输入以下代码: if(!isset($GLOBALS['OPEN_CONNECTIONS'])){ $GLOBALS['OPEN_CONNECTIONS']

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

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

谢谢

# # 这有点老套,但以下是我解决问题的方法

在连接到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();
  }
}

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

是的,只要您的错误处理函数可以访问所有连接对象。因此,无法获取所有打开的连接的列表并关闭它们?我必须将要关闭的确切连接传递到错误处理程序中?我有点希望避免这样做。