Сделано в Раскрутке

Архив эхоконференции RU.PHP

- RU.PHP ------------------------------------------------------------- RU.PHP -
 Msg  : #2075 [514]
 От   : Paul Yanchenko                2:5080/151          07 августа 03, 01:46
 Кому : Cyrill Malevanov                                  07 августа 03, 21:48
 Тема : Re^2: mysql_connect() и mysql_close()
-------------------------------------------------------------------------------
Quoting Cyrill Malevanov wrote to Alexei (06 Aug 03 02:39)
Hello,

 CM> А это проблемы не того, что там "сайт не в koi-8", а того, что он с
 CM> хостингом не дружит, или разработчики с головой или, что меньший грех, с
 CM> документацией.

Пожалуйста не надо вот этих грязных инсинуаций. С головой и документацией у
меня полный порядок. А вот хостинг - да, жутко глючный. Взять хотя бы то, что
временами на нем раз через раз обламывается коннект к базе с ошибкой "Too many 
connections", причем не зависимо от использования или не использования
pconnect. Из-за чего пришлось делать дополнительную проверку и при получении
данной конкретной ошибки повторять попытку соединения до 20 раз. Проблема
решилась. Hо хостинг все равно кривой, это и в других моментах проявляется.

А проблема, как я уже говорил в том, что хостинг временами глючит. Вот код:

(Сорри за плохо читабельный вид из-за авто-переноса строк в голдед и др.)

    function connect()
    {
        $tries = 0;

        do {
            if ($this->_pcon)
                $this->_link =
@mysql_pconnect($this->_host.((!empty($this->_port)&&($this->_port != 3306)) ? 
':'.$this->_port : ''), $this->_user, $this->_passwd);
            else
                $this->_link =
@mysql_connect($this->_host.((!empty($this->_port)&&($this->_port != 3306)) ?
':'.$this->_port : ''), $this->_user, $this->_passwd);
            $tries++;

            if ($this->_link !== FALSE) {
                if (@mysql_select_db($this->_name, $this->_link) !== FALSE ) {
                    if (@mysql_query("SET CHARACTER SET cp1251_koi8",
$this->_link) === FALSE)
                        return $this->raiseError('Could not set database
character set: '.mysql_error($this->_link), PEAR_LOG_ALERT);
                    return TRUE;
                } else
                    return $this->raiseError('Could not select database:
'.mysql_error($this->_link), PEAR_LOG_ALERT);
            } else {
                usleep($this->_try_delay); // Wait 0.1 sec
            }
        } while ((mysql_errno() == 1040) && ($tries <= $this->_max_tries));
        return $this->raiseError(mysql_error(), PEAR_LOG_ALERT);
    }


Hа мой взгляд все вполне корректно и тот факт, что это работает - подтверждает 
это. То, что в один раз из 100 или 1000 запрос "SET CHARACTER SET cp1251_koi8" 
не срабатывает как надо - чья вина?

--- Good byte!                         mail: devnull(at)mail15(dot)com
 * Origin: garbage (2:5080/151)


При переходе по баннеру - скидка 25% на первый месяц обслуживания!
Самый простой способ получить ROOT-доступ
При переходе по баннеру - скидка 25% на первый месяц обслуживания!