通常关闭连接只需oci_close($connection);
完成,或者更糟糕的情况是php脚本结束连接失败。
然而,在我的情况下,我面临着不同的行为。
如果我访问使用PHP 5.2.8,Apache 2.2.11和oci8 1.2.5的应用程序,连接将在几分钟内保持。
实际上似乎是:如果我启动netstat -b
,我会看到进程httpd.exe
在一段时间内(几分钟)保留在数据库网址上的ESTABLISHED
状态。
有人可以告诉我这种行为吗?
P.S。我不使用持久连接。
P.P.S。这里要问的是用于连接和关闭的代码(这是遗留应用程序):
connection:调用一个与连接相关的代码为$connection = @ocilogon ( "$username", "$password", "$database" );
结束:我们开发的每个页面的责任,但通常是oci_close($connection)
答案 0 :(得分:0)
从oci_connect()
这里的文档(ocilogon()
调用相同的函数):
http://www.php.net/manual/en/oci8.connection.php
这意味着您可以通过oci_close()
显式关闭连接,或者在呈现的页面末尾自动关闭连接。我想如果你没有明确关闭它可能需要一段时间才能超时。是否有可能,某些没有oci_close()
次呼叫的网页会导致您看到的开放式连接?
如果您创建的只包含oci_connect()
和oci_close()
的独立页面然后多次执行,您是否看到连接数量直接上升,执行页面的次数和熬夜次数在最终回来之前?
此外,您正在查看哪个指标可以看到连接仍处于打开状态?
如果您使用的是更高版本,那么它可能是Oracle 11g数据库驻留连接池,但您当前使用的版本中不存在该版本。