За последние 24 часа нас посетили 16375 программистов и 1677 роботов. Сейчас ищут 899 программистов ...

Нужна помощь "Operation timed out"

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

  1. Slavonow

    Slavonow Новичок

    С нами с:
    12 дек 2015
    Сообщения:
    9
    Симпатии:
    0
    Всем привет!
    Переносил PHP базу с одного хостинка на другой, при запуске базы на новом хостинге выдало ошибку

    Warning: mysqli::mysqli(): (HY000/2002): Operation timed out in /home/kvs/lib/lib/DBTrait.php on line 20
    Ошибка подключения (2002) Operation timed out

    перекопал все возможное помогите кто может. Спасибо заранее.
     
  2. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    время выполнения операции превысило отведенное на него время, что то в этом роде, видимо к БД остались старые данные для подключения, в том числе и адрес БД.

    PS переносил базу данных или файлы? это далеко разные вещи.
     
  3. Slavonow

    Slavonow Новичок

    С нами с:
    12 дек 2015
    Сообщения:
    9
    Симпатии:
    0
    Переносил и файлы и базы данных.
     
  4. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    короче скорее всего в файлах идут старые данные для подключения к БД, включая адрес, собственно он не может соединится, т.к. там защита.
    по этому меняй на новые.
     
  5. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    VLK, а почему ты не рассмотрел такой вариант как загруженность субд на втором хостинге? ну типа поскольку в него сейчас заливается сайт и делает разовую но большую нагрузку - всё отведенное время могло закончится и он теперь в лоу приорити сидит.
     
  6. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    ну я писал скорее всего, может быть и такое, но скорее всего он просто не поменял данные, я так думаю потому что:
    да и при высокой нагрузке я думаю разок бы и загрузилось, как то так..
     
  7. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    а мне вот почему-то кажется что если бы он на другом серваке ломился с аккредитациями от первого сервака - ошибка была бы не таймаута, а авторизации. не? я по крайней мере не очень могу припомнить ситуации при которой будет наоборот. субд на другом порту работает? - порт недоступен. другой процесс никак не связанный с субд и мускулом на указанном порту работает? - ошибка протокола.

    фиг знает короче если честно :D
     
  8. Slavonow

    Slavonow Новичок

    С нами с:
    12 дек 2015
    Сообщения:
    9
    Симпатии:
    0
    В файлах конфига прописал все возможное, попробую время увеличить на хостинге.

    Добавлено спустя 9 минут 59 секунд:
    Не помогло((
     
  9. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    ну так если ты делаешь подключение к правильному серверу с правильными логинами-паролями а видишь таймаут подключения значит что-то не то с сервером субд к которой ты пытаешься подключиться. так что скорее всего это прямой путь в техподдержку того хостинга.
     
  10. Slavonow

    Slavonow Новичок

    С нами с:
    12 дек 2015
    Сообщения:
    9
    Симпатии:
    0
    Parse error: syntax error, unexpected '[' in /home/kvs/kvs.nichost.ru/docs/config.php on line 14

    содержимое файла
    Код (PHP):
    1. <?php
    2.  
    3. $dblocation = "kvs.mysql";
    4.  
    5. $dbname = "kvs_bs";
    6. $dbuser = "kvs_mysql";
    7.  
    8. $dbnameCommon = "kvs_common";
    9. $dbuserCommon = "kvs_mysql";
    10.  
    11. $dbpasswd = "Zk1_ULKA";
    12.  
    13. class Conf{
    14.     public static $data = [
    15.         'prefix'=>'',
    16.         'city' => 'Сервис',
    17.         'front_title' => 'Компьютерный сервисный центр',
    18.         'manufacturer'=> 'Производитель',
    19.     ];
    20. } 
     
  11. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    объявление массива квадратными скобками введено в более поздней версии чем установлена на хостинге - обновить пхп.
     
  12. Slavonow

    Slavonow Новичок

    С нами с:
    12 дек 2015
    Сообщения:
    9
    Симпатии:
    0
    Обновил PHP

    Warning: mysqli::mysqli(): (HY000/2002): Operation timed out in /home/kvs/lib/lib/DBTrait.php on line 20
    Ошибка подключения (2002) Operation timed out

    вернулась ошибка

    Добавлено спустя 1 минуту 47 секунд:
    Версия Apache разная на старом 1,3 на новом 2,4 это может влиять?
     
  13. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    скорее нет чем да.
     
  14. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Как к БД подключаешься? Покажи настройки.
     
  15. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    погодь, у него до этого был сервер_1_РНР и сервер_1_Mysql, сейчас он поменял хостинг и у него стало сервер_2_РНР и сервер_2_Mysql, но в файлах у него указывает на сервер_1_Mysql, а на этом сервере допустим запрет на обращение с левых ip, как то так.

    как я лично понимаю он просто тупо перекачал файлы и думал что все будет ок.
     
  16. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    По этому я и прошу показать конфиг соединения. 100% косяк там. Например, у него прописан локалхост там, а в документации его шары сказано, что прописывать надо такой-то адрес. Или наоборот.
     
  17. Slavonow

    Slavonow Новичок

    С нами с:
    12 дек 2015
    Сообщения:
    9
    Симпатии:
    0
    DBTrait.php on line 20 - ругается на этот файл вот эго содержимое

    Код (PHP):
    1. <?php
    2.  
    3. /**
    4.  * Class DBTrait
    5.  */
    6. trait DBTrait {
    7.  
    8.     /**
    9.      * @var mysqli
    10.      */
    11.     private static $_db;
    12.  
    13.     /**
    14.      * @param $host
    15.      * @param $user
    16.      * @param $password
    17.      * @param $db
    18.      */
    19.     public static function connect($host, $user, $password, $db) {
    20.         static::$_db = new mysqli($host, $user, $password, $db);
    21.         if (static::$_db->connect_error) {
    22.             die('Ошибка подключения (' . static::$_db->connect_errno . ') '
    23.                 . static::$_db->connect_error);
    24.         }
    25.         static::$_db->set_charset('cp1251');
    26.         static::$_db->autocommit(false);
    27.     }
    28.  
    29.     /**
    30.      * @return mixed
    31.      */
    32.     public static function getDB() {
    33.         return static::$_db;
    34.     }
    35.  
    36.     /**
    37.      * @param $query
    38.      * @return mysqli_result
    39.      */
    40.     public static function query($query) {
    41.         try {
    42.             $result = static::$_db->query($query);
    43.             if (static::$_db->errno) {
    44.                 throw new Exception($query);
    45.             }
    46.             static::$_db->commit();
    47.             return $result;
    48.         } catch (Exception $exc) {
    49.             self::notify($exc);
    50.         }
    51.     }
    52.  
    53.     /**
    54.      * @param $query
    55.      * @return mixed
    56.      */
    57.     public static function multi_query($query) {
    58.         try {
    59.             $result = static::$_db->multi_query($query);
    60.             $i = 0;
    61.             do {
    62.                 ++$i;
    63.             } while (static::$_db->more_results() && static::$_db->next_result());
    64.             if (static::$_db->errno) {
    65.                 static::$_db->rollback();
    66.                 throw new Exception('Ошибка в запросе №' . $i . '<br>' . static::$_db->error . '<br>' . nl2br($query));
    67.             } else {
    68.                 static::$_db->commit();
    69.             }
    70.             return $result;
    71.         } catch (Exception $exc) {
    72.             self::notify($exc);
    73.         }
    74.     }
    75.  
    76.     /**
    77.      * @param $str
    78.      * @return mixed
    79.      */
    80.     public static function real_escape_string($str) {
    81.         return static::$_db->real_escape_string($str);
    82.     }
    83.  
    84.     /**
    85.      * @return mixed
    86.      */
    87.     public static function insert_id() {
    88.         $result = static::$_db->query('SELECT LAST_INSERT_ID()')->fetch_array();
    89.         return $result[0];
    90.     }
    91.  
    92.     /**
    93.      *
    94.      */
    95.     public static function close() {
    96.         static::$_db->close();
    97.     }
    98.     private static function notify($exc){
    99.         if((PHP_SAPI == 'cli')){
    100.             die(iconv('WINDOWS-1251', 'UTF-8', $exc->getMessage()));
    101.         }
    102.         $post = var_export($_POST, 1);
    103.         $msg = $_SERVER['HTTP_REFERER'] . PHP_EOL . Conf::$data['user']['id'] . PHP_EOL . $post . PHP_EOL .
    104.             $exc->getMessage() . '<br>
    105. ' . static::$_db->error . '<br>
    106. ' . nl2br($exc->getTraceAsString());
    107.         mail(Conf::$data['adminEmail'], 'ERROR!!! ' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], $msg);
    108.     }
    109.  
    110. } 
    PHP, JavaScript, SQL и другой код пишите внутри тегов
    Код ( (Unknown Language)):
    1. [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
     
  18. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Мы очень рады.

    И еще раз.
    Я не просто так это пишу. Разумеется, если с конфигом проблема, то ошибка будет в коде, который, используя хреновый конфиг, пытается сделать подключение. Искать надо там, где потерял, а не там, где светлее.
     
  19. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
    Если ошибка про слишком долгое выполнение происходит на строке new mysli(…), предположу, что там упоминается хост, отличный от localhost или 127.0.0.1 и это имя ни в какую не может быть раздуплено. Возможно потому, что там имя со старого хостинга, про которое знают только во внутренней сетке того хостинга.

    Автор, попробуй БЕЗ всей этой хуйни в отдельном тестовом файле выполнить
    Код (PHP):
    1. echo gethostbyname($host); // здесь должен упоминаться твой хост из конфига!   
    не будет ли зависать?

    Добавлено спустя 23 минуты 25 секунд:
    P.S. пару раз на винде сталкивался с проблемой, что при указании "localhost" соединение происходит медленно, т.к. оно отображается на IP6 адрес, а мускуль это почему-то не устраивает ))) но не настолько медленно, чтобы таймауте превысить.
     
  20. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Потому что в документации мускуля написано, что надо 127.0.0.1 писать, во избежание проблем и заморочек с DNS. А еще на винде пыховый драйвер при обращении к localhost может пытаться открыть unix-socket, который просто не поднимется и сдохнет. При этом драйвер словит не ошибку, а таймаут. По этому я и прошу автора, чтобы просто выложил конфиг.
     
  21. Slavonow

    Slavonow Новичок

    С нами с:
    12 дек 2015
    Сообщения:
    9
    Симпатии:
    0
    В базе 2 конфига

    ---------------------1-----------------------
    Код (PHP):
    1. <?php
    2.  
    3. $dblocation = "kvs.mysql";
    4.  
    5. $dbname = "kvs_bs";
    6. $dbuser = "kvs_mysql";
    7.  
    8. $dbnameCommon = "kvs_common";
    9. $dbuserCommon = "kvs_mysql";
    10.  
    11. $dbpasswd = "1111";
    12.  
    13. class Conf{
    14.     public static $data = [
    15.         'prefix'=>'',
    16.         'city' => '11',
    17.         'front_title' => '11',
    18.         'manufacturer'=> '11',
    19.     ];
    20. } 
    ---------------------2-----------------------
    Код (PHP):
    1. <?php
    2. return [
    3.     'connection_self'=>[
    4.         'dsn' => 'mysql:dbname=kvs_bs;host=kvs.mysql',
    5.         'user' => 'kvs_mysql',
    6.         'password' => '1111'
    7.     ],
    8.     'connection_common' => [
    9.         'dsn' => 'mysql:dbname=kvs_common;host=kvs.mysql',
    10.         'user' => 'kvs_mysql',
    11.         'password' => '1111'
    12.     ]
    13. ]; 
     
  22. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
    gethostbyname ?
     
  23. Slavonow

    Slavonow Новичок

    С нами с:
    12 дек 2015
    Сообщения:
    9
    Симпатии:
    0
    А по русски?
     
  24. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
    :( кажется я писал посты в никуда

    Добавлено спустя 1 минуту 40 секунд:
    Чувак, готового решения под копирку не будет. Придётся хотя бы по минимуму читать и вникать.
     
  25. Slavonow

    Slavonow Новичок

    С нами с:
    12 дек 2015
    Сообщения:
    9
    Симпатии:
    0
    Да как бы перелопатил все возможные конфиги прописал все под новый хостинг, и никак((( возможно проблема где то в настройках хостинга