2010-08-11 116 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