如何关闭未关闭的mysql连接?

Jag*_*san 7 php mysql

由于太多未关闭的mysql连接,我的客户端托管提供程序阻止了该站点.该网站以前是由某人创建的,目前我正在维护它.

我已mysql_close在页面末尾添加了该功能.它正在关闭连接良好,但我仍然得到一些未公开的连接.我可能会留下一些......

我需要的是使用cron文件或某些东西关闭服务器中未关闭的mysql连接.

我需要做什么?

是否可以立即关闭所有连接?如果是这样,怎么样?

Nan*_*nne 6

你使用持久连接吗?如果没有,那么你真的不应该担心关闭你的连接.从手册

使用mysql_close()通常是不必要的,因为非持久打开链接在脚本执行结束时自动关闭.另请参阅释放资源.

而不是太多的未闭合的连接,你有太多的开放连接,它不是(基本上是相同的)吗?例如,您网站上的用户数量太多了?

如果您确实有持久连接,请不要忘记:

mysql_close()不会关闭mysql_pconnect()创建的持久链接.

正如评论mysql_connect()中所述,在脚本结束时不太可能释放资源.从另一个手册页

释放资源

由于PHP 4的Zend引擎引入了引用计数系统,因此不会自动检测到没有更多引用的资源,并且它被垃圾收集器释放.因此,很少需要手动释放内存.

注意:持久性数据库链接是此规则的一个例外.它们不会被垃圾收集器破坏.有关更多信息,请参阅持久连接部分.

然而,从页面上的评论可能会有一个旁注mysql_close

至少在PHP5.3.2和Windows连接的情况下,你应该总是使用这个mysql_close()函数关闭并释放PHP使用的tcp套接字.脚本执行后的垃圾收集不会自行关闭tcp套接字.否则,套接字将保持"等待"状态大约30秒,并且任何其他页面加载/连接尝试只会增加打开的tcp连接的总数.此等待时间似乎不能通过PHP设置进行配置.

  • 它们很可能不会关闭.非常均匀.如果页面停止运行,则连接将关闭.你的问题可能是页面没有停止运行,一次运行太多页面,你正在使用pconnect等等,但你有一个普通的PHP脚本与mysql_connect()`没有关闭它的机会连接到底对我来说似乎没有问题.你在php中发现了一个未知的bug. (2认同)