代码之家  ›  专栏  ›  技术社区  ›  Valentin Jacquemin

如何在Apache服务器上关闭来自PHP的Oracle DB连接?我的意思是立即接近

  •  2
  • Valentin Jacquemin  · 技术社区  · 14 年前

    通常,关闭连接只需 oci_close($connection); 或者在更糟的情况下,当php脚本结束连接时,连接就消失了。

    然而,在我的情况下,我面临着不同的行为。

    如果我访问使用php 5.2.8、apache 2.2.11和oci8 1.2.5的应用程序, 保持连接 几分钟内。

    实际上,如果我发射 netstat -b 我看到了这个过程 httpd.exe 保留在 ESTABLISHED 一段时间(几分钟)内数据库URL的状态。

    有人能告诉我这个行为吗?

    P.S.I不使用持久连接。

    P.P.S.这里要求的是用于连接和关闭的代码(这是一个遗留应用程序):

    连接:调用其连接相关代码为 $connection = @ocilogon ( "$username", "$password", "$database" );

    结束语:我们开发的每一页的责任,但通常是 oci_close($connection)

    1 回复  |  直到 14 年前
        1
  •  0
  •   Doug Porter    14 年前

    从上的文档 oci_connect() 此处( ocilogon() 调用相同的函数):

    http://www.php.net/manual/en/oci8.connection.php

    它意味着您可以通过 oci_close() 或者在呈现页面的末尾自动关闭。我可以想象,如果不显式关闭,可能需要一些时间来超时。有没有可能,有些页面没有 OCII-闭包() 您看到的呼叫导致连接断开?

    如果只创建一个独立的页面, OCIA连接() 和一个 OCII-闭包() 然后多次执行它,您是否看到连接计数直接增加了多少次,您执行了页面并保持上升,然后最终返回?

    另外,您正在查看什么指示器,以查看连接是否保持打开状态?

    如果您使用的是更高版本,那么它可能是Oracle11g数据库驻留连接池,但在您当前使用的版本中不存在。