2010-08-19 113 views
0

我有一个使用ODBC函数进行数据库访问的PHP应用程序。我的DBA最近发现应用程序没有关闭其数据库连接,导致大量处于TIME_WAIT状态的无效连接。PHP ODBC不关闭连接

我们检查了代码,我在每个脚本中都做了一次odbc_close_all调用,再加上即使我没有,那么连接仍然应该在脚本结尾处关闭。有没有长时间运行的脚本坚持他们的连接

有没有人看到这样的事情或有任何想法可能是什么问题?

PHP版本5.1.4是运行 在Windows Server 2003 R2的Service Pack 2 MySQL数据库

+0

谢谢!会做。 – wshato 2010-08-19 15:55:11

+0

最好在serverfault.com上问这个问题。我们的亲爱的同事管理员可能更适合告诉你关于TIME_WAIT,SO_REUSEADDR,MaxUserPort和TcpTimedWaitDelay的所有知识,以及如何调整一些窗口设置以解决问题。你的脚本最有可能没有错。 TIME_WAIT表示确实已关闭连接,但操作系统将地址/端口保留一段时间。连接池很可能不是你想要的,尽管_sort of_ possible可能是这样的:http://docs.php.net/manual/en/function.odbc-pconnect – VolkerK 2010-08-19 15:55:33

+0

为什么使用ODBC连接到MySQL以开始? – Charles 2010-08-19 17:43:12

回答

0

经过反复研究,我们偶然发现表明,这个问题是几个来源TcpTimedWaitDelay(感谢VolkerK冰山) 。这对我们帮助很大,但是在任何时候,我们仍然会在TIME_WAIT州看到大约30-40个连接。

我们想知道现在是否有人对Windows服务器的这种行为是否正常提供了建议,如果这种情况一样好,或者有其他途径值得研究。

谢谢