Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php退出与Oracle的连接_Php_Oracle_Oracle10g - Fatal编程技术网

php退出与Oracle的连接

php退出与Oracle的连接,php,oracle,oracle10g,Php,Oracle,Oracle10g,我们遇到了一个持续的问题,PHP5.2.6将停止连接到Oracle 10.2.0.4.0。我们可以几周不出任何问题,然后(通常是周六上午)php将无法连接。数据库已启动并正在运行,我们可以使用varousdb工具手动连接到它,但在重新启动web服务器之前,php永远不会再次连接。web服务器正在运行IIS 6.0 我们使用$connection=oci\u connect($userID,$password,$TNS)进行连接,其中$TNS是本地tnsnames.ora文件中的专用TNS。我们在

我们遇到了一个持续的问题,PHP5.2.6将停止连接到Oracle 10.2.0.4.0。我们可以几周不出任何问题,然后(通常是周六上午)php将无法连接。数据库已启动并正在运行,我们可以使用varousdb工具手动连接到它,但在重新启动web服务器之前,php永远不会再次连接。web服务器正在运行IIS 6.0

我们使用$connection=oci\u connect($userID,$password,$TNS)进行连接,其中$TNS是本地tnsnames.ora文件中的专用TNS。我们在数据中心通过了一个连接管理器,但我不知道它是如何工作的

这一直困扰着我们的原因之一是,我们不确定是谁造成了问题,各种日志也没有说明这一点。这是一个php问题,因为它会出现,或者是数据库本身出于某种原因拒绝连接,或者可能是连接管理器?在解决这一问题上的一些投入将大有帮助。我们周末的工作量比较轻,所以这应该是问题所在。我们还没有找到任何可能引发问题的外部过程

不是真正的“根本原因”解决方案,但如果您不使用FastCGI,切换到FastCGI可能有助于解决此问题。FastCGI中的PHP进程不会持续“数周”。由于oracle客户端是动态加载到PHP进程中的,因此使用FastCGI获得的自动进程重启应该与web服务器重启相同。您可以随时调整FastCGI设置,以或多或少地重新启动进程


如果您使用的是ISAPI,那么这可能是您的根本原因。PHP和ISAPI结合在一起是个坏消息。问题几乎是不可避免的。

当您的web服务器和数据库服务器之间的连接失败时,您是否打开了PHP错误报告?调用oci_connect时,错误消息是什么?*从web服务器ping数据库服务器?*将PHP环境变量(特别是与OCI8相关的变量)与连接失败之前的变量进行比较?查看PHP错误日志后,这次中断似乎与以前的完全不同。我不确定,但我认为在以前的停机中,没有任何内容写入错误日志文件。在这个特殊的例子中,它有一堆“ORA-12154:TNS:无法解析…中指定的连接标识符”消息,这使我怀疑在这个例子中,问题不是PHP而是数据库。我检查了一下,事实上我们使用的是ISAPI,我认为这两种方法中比较好。你是说当使用ISAPI时,流程基本上永远运行,这可能最终导致问题,但FastCGI会自动启动和停止流程,从而防止此类复杂情况?如果是这样,与ISAPI相比,使用FastCGI有什么缺点?FastCGI是在IIS上使用PHP的推荐方法(由MS和Zend推荐)。没有理由使用PHP+ISAPI。没有什么坏处。