重复的解答:How to reconnect in php adodb after exceptions: Mysql server gone away or Lost connection to MySQL server during query的mysql_connect不起作用第二次
的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的代码在默认情况下故意禁用超时重新连接......我就不管测试,并取回。
我不会这样做,只是做你的东西,并退出脚本。您可以使用cron或任务计划程序定期运行您的作业。 – jeroen
我有这样的脚本,需要灵活性来运行一次,每5秒/每5分钟...小时...几天...我要么根据不同的时间单独编码它们,要么编码他们都一样... – user3338098