mysql连接在一定时间后关闭? (PHP)

时间:2009-10-20 16:34:52

标签: php mysql-connect

我有一个需要几分钟才能执行的脚本。 mysql连接在开头建立(mysql_connect),然后是一个带有一些查询的循环(mysql_query)。该循环持续很长时间,几分钟后脚本会抛出一条警告,告知mysql服务器已经消失(提供的参数不是有效的MySQL结果资源)

在执行一段时间后连接是否会自动关闭,即使进行了查询并获取了结果?

2 个答案:

答案 0 :(得分:2)

“提供的参数不是有效的MySQL结果资源”意味着mysql _...()函数要求您传递结果资源,但确实传递了其他内容,例如

$result = false;
$row = mysql_fetch_array($result, MYSQL_ASSOC);
// => Supplied argument is not a valid MySQL result resource

那么,为什么$ result会成为false?几乎总是因为先前的查询失败并且脚本中没有错误处理。每个查询都可能失败,您无法阻止这种情况发生。因此,您始终需要某种错误处理,以便您的脚本在没有错误时会尝试处理结果(但错误条件)。最简单的错误处理是在发生错误时让脚本停止。

$sql = 'SELECT x,y,z FROM ...';
$result = mysql_query($sql, $mysql) or die(mysql_error());
如果出现错误,

mysql_query()会返回false。在这种情况下,执行or之后的语句,即如果查询失败,php将打印MySQL的最后一条错误消息,然后退出。
您可能希望实现一个更高级的错误处理例程,但是...
例如。当PDO对象设置为PDO :: ERRMODE_EXCEPTION时,每当发生错误时都会抛出异常。与(简单)返回值相比,这有点难以理解。

编辑:这是对原始答案的完全重写。第一个建议是查看wait_timeout的价值。

答案 1 :(得分:-1)

你可能正在按照时间设定 Max Execution Time
Set Time Limit