Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> опять mysql has gone away, запрос очень маленький 
:(
    Опции темы
donion
Дата 15.4.2009, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 18.12.2007
Где: Запорожье

Репутация: нет
Всего: нет



Всем привет, 

мой запрос:
INSERT INTO hrefs(id,href,date,flag,site) VALUES('','in_belarus/29149.html','15.04 16:42','0','http://telegraf.by/')
Таких запросов около 10, перед этим собирал весь запрос в кучу - insert....values (...),(...),(...), та же ошибка была.


ответ:
MySQL server has gone away

хостер свеб, может в нем проблема? ничего увеличивать не хотят, говорят оптимизируйте запросы.

Посоветуйте пожалуйста что сделать? Менять хостера? Если нет, то как можно оптимизировать этот запрос?  smile 
PM MAIL   Вверх
solenko
Дата 15.4.2009, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: 7
Всего: 67



что у вас происходит ДО выполнения этого запроса? Сам  по себе запрос простой и может занимать много времени. Потому, здается мне, что сервер просто не дожидается выполнения этого запроса.


--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
skyboy
Дата 15.4.2009, 21:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 14
Всего: 260



Цитата(solenko @  15.4.2009,  19:38 Найти цитируемый пост)
что сервер просто не дожидается выполнения этого запроса

угу. похоже, в момент попытки выполнения этой простой и быстрой вставки mysql сервер уже недоступен.
часом соединение не закрывается в процессе работы?

Добавлено через 18 секунд
Цитата(solenko @  15.4.2009,  19:38 Найти цитируемый пост)
и может занимать много времени

опечатка. пропущено "не"
PM MAIL   Вверх
ksnk
Дата 15.4.2009, 22:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 14
Всего: 386



donion, какого размера таблица? Хотя от размера тут будет зависеть немного...
Может вот это поможет?


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
lelik133
Дата 16.4.2009, 08:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 517
Регистрация: 5.2.2003
Где: Москва

Репутация: 3
Всего: 14



а при остальных запросах select/update/delete такого не наблюдается?
PM ICQ   Вверх
donion
Дата 16.4.2009, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 18.12.2007
Где: Запорожье

Репутация: нет
Всего: нет



Код

    $link = .................. // mysql connect
    
    ...........парсинг и формирование $complex...........

    //selecting everything that has zero value in a flag field
    $query = "SELECT href FROM hrefs WHERE flag = '0'";
    $array = mysql_query($query,$link);
    if (mysql_num_rows($array) > 0) {
       while ($row = mysql_fetch_assoc($array)) {
          $duplicates[] = $row['href'];
       }
    }

    //checking for duplicates in our findings
    for ($i=0;$i<count($complex);$i++) {
      for ($j=0;$j<count($duplicates);$j++) {
        if ($complex[$i]['href'] == $duplicates[$j]) 
        {  
           unset($complex[$i]['href']);
        }
      }
    }

    for ($i=0;$i<count($complex);$i++) {
       if (isset($complex[$i]['href'])) {
          $hrefis = 1;
          break;
       }
    }


    //updating hrefs table
    if ($hrefis == 1) {
      $query = "INSERT INTO hrefs(id,href,date,flag,site,catid) VALUES";
      for ($i=0;$i<count($complex);$i++) {
        if ($complex[$i]['href']) {
          $m = $i+1;
          $affix = !isset($complex[$m]['href'])?'':',';
          $query .= " ('','".$complex[$i]['href']."','".$complex[$i]['date']."','0','".$site."','".$id."')".$affix;
        }
      }
    }
    //debugging
    print_r($complex);
    echo $query;
    mysql_query($query,$link) or die(mysql_error());

    } else {
      //logging

    }


Если честно, то полная загадка, mysql has gone away через раз. 
Это тоже кусок кода, точнее парсера, вкратце опишу как работает:
- срабатывает mt_rand, выбирается 1 или 2. Если 1 приведенным выше кодом собираются все 
ссылки с сайта, проверяются на дупликаты и новые записываются в базу.
- Самое интересное если срабатывает 2 там тоже происходит инсертинг, никаких ошибок не возникает.

У меня ощущение что я запрос неправильно собираю.

to lelik133: а при остальных запросах select/update/delete такого не наблюдается? 
Получается что нет. smile

to ksnk: Да, но остальные то запросы, работают нормально. Из приведенной вами ссылки: 
Эти ошибки будут также выдаваться при посылке серверу неверного или слишком длинного запроса. Вот это точно, у меня скорей всего неправильный запрос.

to all: Самое интересное, что через раз то записывает в базу, то не записывает.


p.s. После ошибки сайт находится в состоянии спячки около 10 минут. Но это думаю стандартное поведение после вылета сервера.


Это сообщение отредактировал(а) donion - 16.4.2009, 13:30
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0491 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.