Php 如何关闭未关闭的mysql连接?
我的客户端托管提供商由于太多未关闭的mysql连接而阻止了该站点。 该网站以前是由某人创建的,目前我正在维护它 我在页面末尾添加了Php 如何关闭未关闭的mysql连接?,php,mysql,Php,Mysql,我的客户端托管提供商由于太多未关闭的mysql连接而阻止了该站点。 该网站以前是由某人创建的,目前我正在维护它 我在页面末尾添加了mysql\u close函数。这是关闭连接良好,但仍然有一些连接未关闭。我可能会在哪里留下一些 我需要的是使用cron文件或其他东西关闭服务器中未关闭的mysql连接 我该怎么办 是否可以一次关闭所有连接?如果是这样,怎么做?如果您获得一些未关闭的连接,很可能会错过一些页面,可能是通过包含等,或者调用“退出”的函数,因此无法访问关闭的代码 我不相信您可以使用cron
mysql\u close
函数。这是关闭连接良好,但仍然有一些连接未关闭。我可能会在哪里留下一些
我需要的是使用cron文件或其他东西关闭服务器中未关闭的mysql连接
我该怎么办
是否可以一次关闭所有连接?如果是这样,怎么做?如果您获得一些未关闭的连接,很可能会错过一些页面,可能是通过包含等,或者调用“退出”的函数,因此无法访问关闭的代码
我不相信您可以使用cron从mysql启动其他连接。您使用的是持久连接吗?如果没有,那么你真的不应该太担心关闭你的连接。从 使用
mysql\u close()
通常不太合适
必要时,作为非持久性开放
链接将自动关闭在
脚本执行结束。看见
也释放了资源
与其说有太多未关闭的连接,不如说有太多打开的连接(当然,这本质上是相同的)不是吗?例如,您的站点上同时有太多用户
如果您确实有持久连接,请不要忘记:
mysql_close()将不会关闭
由创建的持久链接
mysql_pconnect()
正如在评论中所说,在脚本末尾不释放mysql\u connect()
资源的可能性很小。从另一个
释放资源
多亏了参考计数
使用PHP4的Zend引入的系统
引擎,一个没有更多的资源
检测到对它的引用
自动释放,并由
垃圾收集器。因此,它
很少需要释放内存
手动
注意:持久数据库链接是一个
这条规则的例外。它们不是
被垃圾收集器销毁。
请参阅持久连接部分
了解更多信息
然而,从网站上的评论中可能会有旁注
至少使用PHP5.3.2和Windows
通过tcp连接,您应该始终
使用此mysql_close()函数
关闭并释放正在运行的tcp套接字
由PHP使用。垃圾收集
脚本执行不会关闭
tcp套接字本身。插座
否则将保持“等待”状态
大约30秒,以及
附加页面加载/连接
尝试只会增加总数
打开的tcp连接数。这
等待时间似乎不太长
可通过PHP设置进行配置
mysql\u connect将返回实际连接的标识符,您可以在mysql\u close调用中使用该标识符
$conn1 = mysql_connect(.....);
mysql_close($conn1);
如果页面本身打开多个连接,则需要使用标识符,否则mysql_close()将只关闭上次打开的连接
但是正如Nanne所说,PHP通常会在页面执行之后清理连接,所以问题是如果不关闭连接,或者同时打开太多连接。通常每个请求只需要一个连接,除非您同时打开并迭代多个结果集。您可以尝试使用
mysql\u pconnect
,这会产生副作用,尽管如如何关闭在mysql\u pconnect中打开的连接中所述,让我们尝试一下。.连接似乎是用mysql\u connect()打开的只有如何关闭在mysql_pconnect中打开的连接让我们试一试..但要确定的是:您不需要在文件末尾关闭所有连接:它将在那里自动关闭。你只需要关闭它,如果你想做一半,以释放资源。不要浪费时间和精力将mysql\u close
添加到您的所有脚本中:D.如果您不使用pconnect
,您不必担心关闭这些脚本,当然,它不会自动关闭:(它们不太可能没有关闭。非常均匀。如果页面停止运行,连接就会关闭。您的问题可能是页面没有停止运行,一次运行的页面太多,您正在使用pconnect等,但是您可能有一个正常的php脚本,带有mysql\u connect()
最终没有关闭连接的代码对我来说似乎是零。你会在php中发现一个未知的错误。