重複的解答: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