За последние 24 часа нас посетили 30687 программистов и 1803 робота. Сейчас ищут 911 программистов ...

Долгое подключение к базе

Тема в разделе "PHP и базы данных", создана пользователем Elect, 29 авг 2015.

  1. Elect

    Elect Новичок

    С нами с:
    4 авг 2015
    Сообщения:
    70
    Симпатии:
    0
    В общем только одно подключение кушает целую секунду.
    Каким образом можно ускорить?
    Код (PHP):
    1. class db {
    2.         private $_db;
    3.         
    4.         public static $mysqli = null;
    5.         
    6.         private function __construct(){
    7.             global $config;
    8.             $ob_mysqli = @new mysqli($config['db_host'], $config['db_login'], $config['db_pass'], $config['db_name']);
    9.             if(!$ob_mysqli->connect_error){
    10.                 $this->_db = $ob_mysqli;
    11.                 
    12.             }else{
    13.                 exit("No connect to database");
    14.             }
    15.         }
    16.         
    17.         public static function getObject(){
    18.             if(self::$mysqli == NULL){
    19.                 $obj = new db();
    20.                 self::$mysqli = $obj->_db;
    21.             }
    22.         return self::$mysqli;
    23.         }
    24.         
    25.         public function query($sql){
    26.             return $this->_db->query($sql);
    27.         }
    28.     } 
     
  2. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
  3. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Если ровно секунду то это скорее всего таймаут на днс. Такое может быть даже с локалхостом. Лечится шаманством и проходит внезапно.
     
  4. Elect

    Elect Новичок

    С нами с:
    4 авг 2015
    Сообщения:
    70
    Симпатии:
    0
    А можно подсказать,каким именно шаманством?
     
  5. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    адрес сервера на локальной машине или удалённой?
    localhost замени на 127.0.0.1
    Может firewall обрабатывает подключение,
    твой комп нагружен очень сильно или ещё что-то,
    поставь более новую версию MySQL или переустанови текущую

    и как ты узнал что подключение занимает секунду?
     
  6. Elect

    Elect Новичок

    С нами с:
    4 авг 2015
    Сообщения:
    70
    Симпатии:
    0
    1.Локалхост.
    2.Возможно,тут только скайп и браузер открыт,хотя на другом компе и вправду всё было нормально.
    3.Версия мускула самая последняя,даже отдельно в денвере ставил для пхп 5.5
    4.microtime(),а точнее его доделка(Benchmark) которую я украл из CodeIghniter'а

    Добавлено спустя 5 минут 59 секунд:
    Ооо,помла замена localhost на 127.0.0.1.
    SPASIBO BOLSHOE
     
  7. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    Такая фигня может быть когда localhost резолвится как ip6 адреc, а mysql не настроен на ip6.

    Можно коннектиться по явному ip4 адресу либо работать через сокет.
     
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    самая противная по дебагу ошибка, можно рвать волосы на заднице пару дней, пока не наткнёшься на упоминание про днс и хостс и ипв6 и прочее. Жуть.


    У меня в одном проекте запись в базу в одну из таблиц занимает 300 мс на продакшене, а на виртуалке дома - ну три мс. Вот почему? Блин...
     
  9. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    artoodetoo, спасибо за инфу.
     
  10. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    нужно стремиться всегда работать через сокет - и быстрее и лучше.