2011-06-15 75 views
0

我正在使用WAMP(Apache 2.2.11,MySQL 5.1.36,PHP 5.3.0)編寫一個PHP Web應用程序,該應用程序有一個到MySQL數據庫的鏈接。mysql服務器已經消失 - 沒有超時錯誤或崩潰

我運行一個程序,需要大約2分鐘在蟾蜍執行。如果我嘗試在PHP應用程序中運行它,我得到了錯誤「MySQL服務器已經消失......」,「錯誤讀取結果集的標題」以及「超過60秒的最大執行時間」

I調升mysql.connect_timeout 600(使用的ini_set)和default_socket_timeout 600(如this question建議,這解決了超時錯誤,但我仍然得到了第2位。

我試着設置max_input_time設置爲-1,和MySQL的服務器端,我把max_allowed_pa​​cket設置爲256M,這兩個都解決了這個問題。

有沒有其他的方法可以繞過這個錯誤而不改變正在運行的MySQL程序?

當網頁加載:

set_time_limit(0); 
ini_set('mysql.connect_timeout', 600);//for long queries 
ini_set('default_socket_timeout', 600);//for long queries 
//ini_set('max_input_time',-1); //don't know what this does 

當查詢被稱爲:

if($reconnect===true){ 
    $this->disconnectDB(); 
} 
$this->connectToDB(); 
if($this->selectDB($dbName)===FALSE){ 
    return false; 
} 
if(mysql_ping($this->con)===false){ 
    return array();   
} 
$result = mysql_query($query,$this->con); //this is where the connection "goes away" 
+0

你能告訴我們你的代碼(無論是在這裏還是在粘貼中)? – Neal 2011-06-15 17:06:51

+0

添加到問題 – Andrea 2011-06-15 17:23:42

回答

0

這是一個PHP設置的結果:maximum execution time of 60 seconds exceeded。將set_time_limit(0)設置爲在需要時禁用時間限制。

MySQL server has gone away in...可能是幾件事的結果。包括MySQL崩潰。你可能想看看mysql日誌尋找線索。

+0

,正如您從上面包含的代碼中可以看到的那樣,我已經有一個set_time_limit(0)行。在連接消失後,wamp/logs中的mysql.log沒有任何添加的條目。 – Andrea 2011-06-15 17:25:19

+0

您能否通過mysql客戶端直接正確運行查詢? – datasage 2011-06-15 17:32:17

+0

是的。它需要2分4秒。 – Andrea 2011-06-15 17:39:35