2010-08-11 121 views
0

我有這樣的PHP代碼,文件被其他服務器託管和其他數據庫,其中丟失連接 - PHP,MySQL的

$hostname_xxx = "xxxdb.db.234141.mysqldbhosted.com"; 
$database_xxx = "xx11xx"; 
$username_xxx = "xx11xx"; 
$password_xxx = "xx332211xx"; 
$shasown = mysql_pconnect($hostname_xxx, $username_xxx, $password_xxx) or trigger_error(mysql_error(),E_USER_ERROR); 


$your_ip = $_SERVER['REMOTE_ADDR']; 


echo $your_ip; 



$insertSQL1 = "INSERT INTO table (users_ip) VALUES ('$your_ip)"; 
mysql_select_db($database_xxx, $xxx); 
$Result21 = mysql_query($insertSQL1, $xxx) or die(mysql_error()); 

我得到的錯誤是

警告:mysql_pconnect()[function.mysql-pconnect]:行查詢期間丟失連接到MySQL服務器在/domains/4444.com/html/55.php 8

致命錯誤:查詢過程中丟失連接到MySQL服務器在/domains/4444.com/html/55.php上線8

由於 讓

+0

細節:http://dev.mysql.com/doc/refman/5.0/en/gone-away.html – 2010-08-11 11:23:59

+0

我看到這個頁面,我可以寫,可以克服這種錯誤代碼? – X10nD 2010-08-11 11:25:36

+0

您確定可以使用您提供的憑據連接到遠程服務器嗎?爲什麼你使用持久連接? – wimvds 2010-08-11 11:31:15

回答

2

mysql_pconnect()創建到數據庫的持久連接,而mysql_connect()函數沒有。如果您正在創建持續連接,則只需在整個會話中連接一次,因此如果您不止一次創建持久連接,這可能是原因。

在共享服務器上,可能值得通過mysql_pconnect()嘗試mysql_connect()並查看是否可以解決手頭的問題。此外,在你的代碼中有:

$Result21 = mysql_query($insertSQL1, $xxx) or die(mysql_error()); 

但應該是:

$Result21 = mysql_query($insertSQL1, $shasown) or die(mysql_error()); 

因爲$ XXX從來就不是一個連接變量,但$ shasown是。

我個人喜歡使用mysqli_connect(),因爲我發現它有點快。這個錯誤

+0

不,你可以在會話中多次使用mysql_pconnect,它只會重用你已經打開的連接。但我不建議使用持續連接,如果你有很多併發用戶,你可能會很快失去連接...... – wimvds 2010-08-11 11:40:00

+0

@wimvds我說「你只需要在整個會話中連接一次」而不是「你可以或必須在整個會話中只連接一次「 – SimonDowdles 2010-08-11 11:44:28

+0

此外,int會不斷地調用一個持久連接?你也可以使用mysql_connect();然後。 – SimonDowdles 2010-08-11 11:45:23