我们有一个持续的问题,php 5.2.6将退出连接到Oracle 10.2.0.4.0。我们可以在几周内没有任何问题,然后(通常是周六早上)php将无法再连接。数据库已启动并运行,我们可以使用各种数据库工具手动连接到它,但在重新启动Web服务器之前,php不会再次连接。 Web服务器正在运行IIS 6.0。
我们使用$ connection = oci_connect($ userID,$ password,$ TNS)进行连接,其中$ TNS是本地tnsnames.ora文件中的适当TNS。我们通过数据中心的连接管理器,但我不知道其工作原理的细节。
这困扰我们的原因之一是我们不确定是谁造成了这个问题,各种日志都没有说明这一点。这是一个php问题,因为它会出现或者DB本身出于某种原因拒绝连接,或者它可能是连接管理器?确定这一点的一些输入会有很大帮助。我们的负荷在周末较轻,所以应该是问题。我们无法找到任何可能引发问题的外部流程。
答案 0 :(得分:0)
不是真正的“根本原因”解决方案,但如果您不使用FastCGI,切换到FastCGI可能有助于解决此问题。 FastCGI中的PHP进程不会持续“数周”。由于oracle客户端动态加载到PHP进程中,因此使用FastCGI重新启动的自动进程应该与Web服务器重新启动相同。您可以随时调整FastCGI设置,以便或多或少地重新启动该过程。
如果你正在使用ISAPI,那可能是你的根本原因。 PHP和ISAPI结合起来是个坏消息。问题几乎是不可避免的。