2015-04-15 124 views
1

重複的解答: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的代碼在默認情況下故意禁用超時重新連接......我就不管測試,並取回。

+1

我不會這樣做,只是做你的東西,並退出腳本。您可以使用cron或任務計劃程序定期運行您的作業。 – jeroen

+0

我有這樣的腳本,需要靈活性來運行一次,每5秒/每5分鐘...小時...幾天...我要麼根據不同的時間單獨編碼它們,要麼編碼他們都一樣... – user3338098

回答

1

mysql_connect如果連接已斷開或超時會從未連接第二個時間,除非你用的參數new_link與價值true調用它並不關心。

mysql_connect($server,$username,$password,true); 
相關問題