如何关闭未关闭的mysql连接?
我的托管服务提供商的客户端因为太多未关闭的mysql连接而阻塞了该站点。 该网站以前由某人创建,目前我正在维护它。如何关闭未关闭的mysql连接?
我在页面的末尾添加了mysql_close
函数。它正在关闭连接,但仍然有一些连接未关闭。我可能留下了一些地方..
我需要的是关闭在使用cron的文件或一些东西服务器未关闭MySQL连接..
我有什么做的?
是否可以一次关闭所有连接?如果是这样,怎么样?
您是否使用持续连接?如果不是,那么你真的不应该太担心关闭你的连接。从manual
使用
mysql_close()
通常没有必要 ,作为非持久性开放 链接在脚本执行的 结束自动关闭。见 也释放资源。
而不是太多未关闭的连接,它不是(它本质上是相同的),你有太多的开放连接?例如,您的网站上一次使用的用户太多?
如果您有持久连接,千万不要忘记:
mysql_close()不会关闭()由 mysql_pconnect创建 持久连接。
正如在评论中所说的那样,在脚本末尾不会释放一个mysql_connect()
资源。从另一个manual page
释放资源
由于与PHP 4的Zend的 引擎,没有更多的 引用它的资源推出的引用计数 系统会自动检测 ,它是被 垃圾收集器释放。由于这个原因,它很少需要手动释放内存 。
注意:持久数据库链接是此规则的一个例外 。它们不是由垃圾收集器销毁的 。 有关更多信息,请参阅持续连接部分 。
可能会有然而阿里纳斯,从评论上mysql_close
page
至少在PHP5.3.2和Windows 通过TCP连接,你应该总是 使用这种mysql_close()函数来 关闭并释放由PHP使用的 的tcp套接字。 脚本执行后的垃圾回收不会自行关闭 tcp套接字。否则,插座 将保持“等待”状态 大约30秒,并且任何 附加页面加载/连接 尝试将仅添加到总共 开放tcp连接的数量。此 等待时间似乎不是 可通过PHP设置进行配置。
连接似乎只用mysql_connect()打开..如何关闭打开即使在mysql_pconnect中也试试.. – Jagadeesan 2011-06-12 07:48:01
但是可以肯定的是:你不需要关闭每一个连接在文件的末尾:它将在那里自动关闭。如果你想半途而废,只需要关闭它就可以释放资源。不要浪费时间和努力为所有脚本添加'mysql_close':D。如果你不使用'pconnect',你不必担心关闭那些课程 – Nanne 2011-06-12 07:51:22
不,它不是自己关闭的: – Jagadeesan 2011-06-12 08:01:46
如果你得到一些未关闭的连接,你可能会错过某些页面,或者通过包含等,或者调用“退出”函数,所以你不会达到你的密码。
我不相信你可以使用cron从mysql启动其他连接。
mysql_connect将返回实际连接的标识符,您可以在mysql_close调用中使用该标识符。
$conn1 = mysql_connect(.....);
mysql_close($conn1);
如果页面本身打开多个连接,则需要使用标识符,否则mysql_close()只会关闭最后打开的连接。
但正如Nanne所言,PHP通常会在页面执行后自行清理连接,所以问题是如果不关闭它们,或者如果同时打开太多连接。通常,每个请求只需要1个连接,除非您同时打开并遍历多个结果集。
你可以尝试使用'mysql_pconnect',它具有副作用,虽然如http://*.com/questions/1340859/which-is-better-mysql-connect-or-mysql-pconnect – konsolenfreddy 2011-06-12 07:43:45
如何关闭在mysql_pconnect中打开的连接让试试看吧.. – Jagadeesan 2011-06-12 07:52:12