Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.81/21: Рейтинг темы: голосов - 21, средняя оценка - 4.81
0 / 0 / 0
Регистрация: 22.05.2010
Сообщений: 116
1

Lost connection to MySQL server during query

27.10.2011, 19:33. Показов 4146. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Написал скрипт, который обращается к удалённой странице через XML и кеширует все данные в MYSQL базу.
Скрипт состоит :
1. Подключение к базе данных.
2. Выборка из базы данных необходимого запроса.
3. Поиск на удалённом XML документе необходимой информации. (занимает от 20 до 250 секунд)
4. Запись в MYSQL базу данных этой информации.

Так вот возникает постоянная проблема
Lost connection to MySQL server during query
на 4 этапе при попытки записи, если 3.процесс занимает более 120* секунд.

Я делал между 3 и 4 этапом тестовые запросы, при этом подключение (mysql_connect) проходило нормально, а вот попытка выборки (mysql_select_db) базы данных приводит к "Lost connection to MySQL server during query", как и любые другие выборки.

Я даже в .htaccess засунул: php_value mysql.connect_timeout 250

[bold]Пожалуйста, подскажите путь решения данной проблемы![/bold]
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.10.2011, 19:33
Ответы с готовыми решениями:

QSqlDatabase + OpenMP = Error: Lost connection to MySQL server during query
Добрый день! Возникает ошибка при использовании QSqlDatabase и OpenMP.

Lost connection to MySQL server at 'reading initial communication packet', system error: 111
Отправила сайт на хостинг при помощи Filezilla и базу данных импортировала на хостинг, в браузере...

Counter-Strike 1.6: "Connection to server lost during level change"
Проблема такова при играх на любом серваке вылетает из сервака с надписью "Connection to...

Network connection may be lost
"network connection may be lost " =такая ошибка . не знаю вообще откуда появилась все перестало...

9
7 / 8 / 6
Регистрация: 11.05.2008
Сообщений: 876
27.10.2011, 21:45 2
Ну так сделай после пункта 2 mysql_close() и открой соединение заново перед пунктом 4. Чтобы грабеж удаленного XML проходил при закрытом соединении.
Все нуждые данные из мускула вытащи до пункта 3.
Какие проблемы-то?

Представь, что у тебя одновременно запустятся 200 скриптов.
Что, думаешь, мускул тебя вообще не пошлет от такой засады?
0
0 / 0 / 0
Регистрация: 22.05.2010
Сообщений: 116
30.10.2011, 13:23  [ТС] 3
webbyte в принципе у меня так и сделано, я забыл об этом упямянуть.
так что можно считать что ваш совет мне первый раз не помог вообще.
0
3 / 3 / 6
Регистрация: 20.06.2010
Сообщений: 580
30.10.2011, 16:08 4
http://dev.mysql.com/doc/mysql/ru/gone-away.html
0
0 / 0 / 0
Регистрация: 22.05.2010
Сообщений: 116
30.10.2011, 16:50  [ТС] 5
[italic]К сожалению, не помогает.[/italic]
0
7 / 8 / 6
Регистрация: 11.05.2008
Сообщений: 876
30.10.2011, 18:45 6
Гм. То есть ты закрываешь соединение, получаешь данные, обрабатываешь их, пытаешься запихать их в базу, но к ней не получается подсоединиться? Или получается, но при запросе (При INSERT''е, я думаю) коннект теряется?
0
7 / 8 / 6
Регистрация: 11.05.2008
Сообщений: 876
30.10.2011, 18:46 7
Код бы в студию. Хотя б основные повороты - блоками.
Интересубт только функции, относящиеся к mysql
Остальной код можно заменить комментариями.
0
0 / 0 / 0
Регистрация: 22.05.2010
Сообщений: 116
30.10.2011, 23:25  [ТС] 8
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php
include("./config.inc");
$db = mysql_connect("$db_host", "$db_user", "$db_pasw")
                or die("Unable to connect to sql server\n");
mysql_select_db("$db_name", $db) or die("Unable to select database\n");
 
# ищу задания для керирования из XML ресурса..
 
mysql_close() ;
 
# Выдираю нужное из  XML ресурса в двухмерный массив $arr
 
mysql_connect("$db_host", "$db_user", "$db_pasw")
                or die("Unable to connect to sql server  ".mysql_error()."\n");
 
mysql_select_db("$db_name", $db) or die("Unable to select database\n"); # Происходит ошибка соединения. Если обращение к XML ресурсу длилось более 120 екунд.
 
for($count=1; $count <= count($arr[1])-1; $count++ )   {
$name_en = $arr[2][$count];
$location= $arr[3][$count];
$transfer= $arr[4][$count];
$min= $arr[5][$count];
$max= $arr[6][$count];
 
$res = mysql_query("select `date` , `iata`,`name_en` from `hotel_cach` WHERE `date`=''$date'' and `iata`=''$iata'' and `days`=''$days''  and `room_type`=''$room_type''  and `name_en`=''$name_en''   ") or die("\nSQL error ".mysql_error()." in: $res ");
list($date11, $iata11, $name_en11) = mysql_fetch_row($res);
 
if ( ! $date11 and ! $iata11 and ! $name_en11 )  {
mysql_query ("insert into `hotel_cach`
        ( `date` , `date_index`, `iata`, `name`, `name_en` , `location` , `transfer`, `min`,`max`, `days`,`room_type` )
values  ( ''$date'',''$date_index'',''$iata'',''$name'',''$name_en'',''$location'',''$transfer'',''$min'',''$max'',''$days'',''$room_type'' )") or die("\nSQL error ".mysql_error()." in: $sql\n");   }
else { echo "\nЗаписи: ".$date." - ".$iata." - ".$name_en." уже есть в базе \n";  }
}
 
# Заношу в базу данных отметку о выполнении задания.
 
?>
0
85 / 61 / 69
Регистрация: 15.03.2007
Сообщений: 6,906
31.10.2011, 11:54 9
По моему проблема в том что ты передаешь старое значение подключения (переменная $db) во втором вызове mysql_select_db
То есть ты делаешь следующее (упрощенно)
PHP
1
2
3
4
5
6
7
8
9
10
$db = mysql_connect("$db_host", "$db_user", "$db_pasw");
mysql_select_db("$db_name", $db);
...
mysql_close();
 
...
mysql_connect("$db_host", "$db_user", "$db_pasw");
mysql_select_db("$db_name", $db); <-- здесь используется старое значение $db
...
mysql_close();
Соответственно решение простое, второй вызов mysql_connect тоже должен инициализировать переменную $db

Во-первых, реши пользуешься ли ты везду значением которое возвращает mysql_connect или нет. И если да, то передавай его во все вызовы функций mysql_*. В том числе и в mysql_close.

Во-вторых, зачем ты передаешь значения переменных в кавычках?
PHP
1
mysql_connect("$db_host", "$db_user", "$db_pasw")
Зачем усложнять код и заставлять PHP делать лишнюю работу?
Пиши просто
PHP
1
mysql_connect($db_host, $db_user, $db_pasw)
Еще будет лучше заменить эти переменные на константы с помощью функции define
0
0 / 0 / 0
Регистрация: 22.05.2010
Сообщений: 116
07.11.2011, 18:05  [ТС] 10
Мне помогло устранение кавычек в
mysql_connect("$db_host", "$db_user", "$db_pasw")
все остальные варианты решения проблем я уже пробовал.
Сейчас всё работает замечательно.
0
07.11.2011, 18:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.11.2011, 18:05
Помогаю со студенческими работами здесь

OpenGL message “lost connection” (реестр)
Вылетает из любой игры с таким сообщением: В представленной ссылке советуют увеличить какой-то...

Error accessing file. Network connection may be lost
Ситуация: база на Access локальная на домашнем компе, не связана ни с какими другими базами ни на...

'Connection to host lost' при работе апплета через http
Вечер добрый. Проблема с ServerSocket при вызове appleta через http Ситуация: пишу свой чат...

Cannot establish connection to MySQL server: #1045 - Access denied for user: 'user_db@localhost' (Using password: YES)
Приветствую всех. При установке скрипта столкнулся с траблой, а именно, при заполнении полей на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru