Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.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 如何关闭未关闭的mysql连接?_Php_Mysql - Fatal编程技术网

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

Php 如何关闭未关闭的mysql连接?,php,mysql,Php,Mysql,我的客户端托管提供商由于太多未关闭的mysql连接而阻止了该站点。 该网站以前是由某人创建的,目前我正在维护它 我在页面末尾添加了mysql\u close函数。这是关闭连接良好,但仍然有一些连接未关闭。我可能会在哪里留下一些 我需要的是使用cron文件或其他东西关闭服务器中未关闭的mysql连接 我该怎么办 是否可以一次关闭所有连接?如果是这样,怎么做?如果您获得一些未关闭的连接,很可能会错过一些页面,可能是通过包含等,或者调用“退出”的函数,因此无法访问关闭的代码 我不相信您可以使用cron

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

我在页面末尾添加了
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中发现一个未知的错误。