За последние 24 часа нас посетили 15895 программистов и 1641 робот. Сейчас ищут 893 программиста ...

Кончаются соединения. Помогите!

Тема в разделе "PHP для новичков", создана пользователем MegaWolf510, 20 окт 2009.

  1. MegaWolf510

    MegaWolf510 Активный пользователь

    С нами с:
    7 сен 2009
    Сообщения:
    7
    Симпатии:
    0
    Достала уже одна и та же проблема. Делаю как по книжке:

    class CMysql
    {
    var $db_name;
    var $db_user;
    var $db_passwd;
    var $db_host;


    function CMysql()
    {
    $this->db_name = "...";
    $this->db_user = "...";
    $this->db_passwd = "...";
    $this->db_host = "...";
    }

    function get_rows($query)
    {
    $link = mysql_pconnect($this->db_host, $this->db_user, $this->db_passwd)
    or die("Could not connect: " . mysql_error());
    mysql_select_db($this->db_name);

    $result = mysql_query($query)
    or die("Could not query: ". mysql_error());

    $rows = array();
    while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
    $rows[] = $row;
    }

    mysql_free_result($result);
    mysql_close($link);

    return $rows;
    }
    }


    Сервер поработает какое то время, а потом вываливает:
    Warning: mysql_pconnect() [function.mysql-pconnect]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /home/u52254/lehrerzimmerru/www/includes/mysql.php on line 21
    Could not connect: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)


    Как я понимаю, закончились соединения у mysql. как это побороть???
    Уже достала эта хрень!....

    Спасибо!
     
  2. MegaWolf510

    MegaWolf510 Активный пользователь

    С нами с:
    7 сен 2009
    Сообщения:
    7
    Симпатии:
    0
    Да. Ответы типа перезагрузи сервер не писать.
    Нужно чтоб всё работало нормально без внешнего вмешательства.
     
  3. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Верно понимаете.

    Решения 3:
    1) Не использовать постоянный коннект
    2) Увеличить количество соединений Mysql в его конфиге
    3) Закрывать соединение после завершения работы скрипта (но зачем тогда постоянный коннект)
     
  4. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    заменить на

    mysql_connect
     
  5. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    PHP:
    1. <?php
    2. $link = mysql_pconnect($this->db_host, $this->db_user, $this->db_passwd)
    3. or die("Could not connect: " . mysql_error());
    4. mysql_select_db($this->db_name);
    5.  
    поместить в конструктор + заменить mysql_pconnect на mysql_connect
     
  6. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    ООП круче некуда)
     
  7. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    +1 книжку в топку
     
  8. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    topas
    Точно, самого главного не углядел )
     
  9. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Ну если уж ООП.
    То закрытие коннекта можно поместить в деструктор :)
     
  10. iliavlad

    iliavlad Активный пользователь

    С нами с:
    24 янв 2009
    Сообщения:
    1.689
    Симпатии:
    4
    с таким конструктором и объявлением членов класса книжка наверное устаревшая.
     
  11. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    MegaWolf510
    Это PHP4. PHP4 больше не поддерживается.