2010-08-11 4 views
0

У меня есть этот PHP код, файлы размещаются на другом сервере и дб еще гдеПодключения к серверу MySQL во время запроса - 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 во время запроса in /domains/4444.com/html/55.php on линия 8

Благодаря Жан

+0

подробности об этой ошибке: http://dev.mysql.com/doc/refman/5.0/en/gone-away.html –

+0

Я видел эту страницу, могу ли я написать код, способный преодолеть эту ошибку? – X10nD

+0

Вы можете подключиться к удаленному серверу с предоставленными вами учетными данными? И почему вы используете постоянное соединение? – wimvds

ответ

2

mysql_pconnect() создает постоянное соединение с базой данных, в то время как mysql_connect() не делает. ЕСЛИ вы создаете постоянное соединение, вам нужно только подключаться один раз на протяжении всего сеанса, поэтому, если вы создаете постоянное соединение более одного раза, это может быть причиной.

На общих серверах, возможно, стоит попробовать mysql_connect() по mysql_pconnect() и посмотреть, исправляет ли это проблему. Кроме того, в вашем коде у вас есть:

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

Но должно быть:

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

, потому что $ ххх никогда не была переменная связь, но $ shasown есть.

Лично мне нравится использовать mysqli_connect(), поскольку я нахожу его немного быстрее.

+0

Нет, вы можете использовать mysql_pconnect столько раз, сколько хотите в своем сеансе, он просто повторно использует соединение, которое вы уже открыли. Но я бы не советовал использовать постоянные подключения, вы можете быстро отключиться от соединений, если у вас много одновременных пользователей ... – wimvds

+0

@wimvds Я сказал: «вам нужно только один раз подключаться один раз на протяжении всей сессии», а не «вы МОЖЕТЕ или ДОЛЖНЫ только один раз подключайтесь один раз на протяжении всего сеанса » – SimonDowdles

+0

Кроме того, что бы точка int вызывала постоянное соединение снова и снова? Вы также можете использовать mysql_connect(); тогда. – SimonDowdles

Смежные вопросы