Php 检查MySQL连接

Php 检查MySQL连接,php,mysql,connection,Php,Mysql,Connection,我是一个偏执狂,即使在我做了一些事情之后,我在我的PHP函数中包含了mysql\u close(),是否有一种方法可以检查(除了另一个查询)连接是否仍然打开,只是为了确保。mysql\u close()函数如果成功,将返回true。通过在检查mysql\u close()的返回值之外添加额外的检查,您没有做任何有帮助的事情,并且添加了另一个地方,代码中可能会出现bug $con = mysql_connect("localhost" ,"name", "pass"); /* your code*

我是一个偏执狂,即使在我做了一些事情之后,我在我的PHP函数中包含了
mysql\u close()
,是否有一种方法可以检查(除了另一个查询)连接是否仍然打开,只是为了确保。

mysql\u close()
函数如果成功,将返回
true
。通过在检查
mysql\u close()
的返回值之外添加额外的检查,您没有做任何有帮助的事情,并且添加了另一个地方,代码中可能会出现bug

$con = mysql_connect("localhost" ,"name", "pass");
/* your code*/

if ($con){
   mysql_close();
}
在任何情况下,非持久性连接都会在脚本完成时自动关闭,因此没有必要这样做,除非您有特定的理由提前关闭资源。

如果成功,则
mysql\u close()
函数返回
true
。通过在检查
mysql\u close()
的返回值之外添加额外的检查,您没有做任何有帮助的事情,并且添加了另一个地方,代码中可能会出现bug

在任何情况下,非持久性连接都会在脚本完成时自动关闭,因此没有必要这样做,除非您有特定的理由提前关闭资源。

您可能想尝试一下

以下是该页的摘录:

bool mysql_ping ([ resource $link_identifier ] )
Checks whether or not the connection to the server is working.
If it  has gone down, an automatic reconnection is attempted.
This function can be used by scripts that remain idle for a long while,
to check whether or not the server has closed the connection and
reconnect if necessary. 

Note:  Since MySQL 5.0.13, automatic reconnection feature is disabled.
至于这段摘录,我不知道自动重新连接功能是否被禁用。注释指的是mysql还是PHP。你必须用它来做实验才能找到答案。如果这个重新连接问题确实是真的,那么@Brad的答案就是偏执的证明,因为您可以在查询数据并获取数据后立即运行mysql\u close。在这一点上,您可以确定没有有效的连接,因为您显式地关闭了它。因此,您必须为下一个查询运行mysql\u connect

但是,让非持久性连接自行关闭并不总是一个好主意,因为这可能会在DB服务器的netstat中累积等待时间。这会使Web服务器误以为数据库连接不再可用,因为MySQL耗尽了操作系统的资源,因为它会延迟释放连接资源。为了更安全,抱歉,在完成后运行mysql\u close,在下一个查询中运行mysql\u connect/mysql\u query

如果愿意,您可以构建一个try-catch范式或一组If-then-else statement,以便首先在已建立的连接上运行mysql\u-ping。如果为true,则将其与mysql\u查询一起使用。否则,运行mysql\u close/mysql\u connect/mysql\u query。

您可能想试试

以下是该页的摘录:

bool mysql_ping ([ resource $link_identifier ] )
Checks whether or not the connection to the server is working.
If it  has gone down, an automatic reconnection is attempted.
This function can be used by scripts that remain idle for a long while,
to check whether or not the server has closed the connection and
reconnect if necessary. 

Note:  Since MySQL 5.0.13, automatic reconnection feature is disabled.
至于这段摘录,我不知道自动重新连接功能是否被禁用。注释指的是mysql还是PHP。你必须用它来做实验才能找到答案。如果这个重新连接问题确实是真的,那么@Brad的答案就是偏执的证明,因为您可以在查询数据并获取数据后立即运行mysql\u close。在这一点上,您可以确定没有有效的连接,因为您显式地关闭了它。因此,您必须为下一个查询运行mysql\u connect

但是,让非持久性连接自行关闭并不总是一个好主意,因为这可能会在DB服务器的netstat中累积等待时间。这会使Web服务器误以为数据库连接不再可用,因为MySQL耗尽了操作系统的资源,因为它会延迟释放连接资源。为了更安全,抱歉,在完成后运行mysql\u close,在下一个查询中运行mysql\u connect/mysql\u query


如果愿意,您可以构建一个try-catch范式或一组If-then-else statement,以便首先在已建立的连接上运行mysql\u-ping。如果为true,则将其与mysql\u查询一起使用。否则,运行mysql\u close/mysql\u connect/mysql\u query。

AFAIK如果用mysql\u pconnect()打开mysql连接,它们在mysql\u close()之后不会真正关闭,只要返回连接池就可以了。

AFAIK如果用mysql\u pconnect()打开mysql连接,它们在mysql\u close()之后不会真正关闭,只需返回连接池即可工作。我是否需要在每次进行查询时请求连接?如果需要,是否需要在脚本末尾关闭连接?这里要说的是,一旦“函数connectAndMakeSomeQuery()”运行完毕,连接将关闭?不,对所有查询使用一个连接。您不需要(也不应该)为每个查询关闭并重新打开它。出于同样的原因,您也不应该将连接和查询代码组合在一个函数中。连接一次,然后对所有查询重新使用该连接。一旦您的脚本完成(不是功能,而是整个程序),那么当PHP清理资源时,MySQL将自动断开连接。我是否需要在每次进行查询时请求连接?如果需要,是否需要在脚本末尾关闭连接?这里要说的是,一旦“函数connectAndMakeSomeQuery()”运行完毕,连接将关闭?不,对所有查询使用一个连接。您不需要(也不应该)为每个查询关闭并重新打开它。出于同样的原因,您也不应该将连接和查询代码组合在一个函数中。连接一次,然后对所有查询重新使用该连接。一旦脚本完成(不是函数,而是整个程序),那么当PHP清理资源时,MySQL将自动断开连接。