mysql_connect第一次工作,但在此之后永远不会工作......
$connectDb = mysql_connect(secret, secret, secret);
mysql_select_db("secret", $connectDb);
$sleepPeriod = 1800;
sleep($sleepPeriod);
while (true) {
$result = mysql_query("good query", $connectDb);
if (!$result) {
if (mysql_error()=='MySQL server has gone away') {
echo "MySql connection was disconnected... reconecting...\n";
$connectDb = mysql_connect(secret, secret, secret);
mysql_select_db("secret", $connectDb);
continue;
} else {
die("Invalid Query: ".__FILE__.':'.__LINE__.' '.mysql_error()."\n");
}
}
//DO STUFF
sleep($sleepPeriod);
}
如果发生超时或断开连接mysql_connect
似乎失败并且mysql_error
不断返回"MySQL server has gone away"
,这会导致无限循环,可能持续数天。是否有其他方法可以清除mysql_error
的错误响应或使mysql_connect
第二次运行而无需手动重新启动此程序或使用cron。
我刚注意到mysql_connect
有一个名为new_link
的奇怪(愚蠢?)参数,但如果php的mysql代码默认情况下故意禁用重新连接,那么这将是一个令人发指的设计。我不管怎样进行测试,然后再回来。
答案 0 :(得分:2)
mysql_connect
并不关心连接是否已断开连接或超时,从不连接第二次,除非您使用带有值的参数new_link
调用它true
。
mysql_connect($server,$username,$password,true);