Постоянные соединения не работают с драйвером mysqli в codeIgniter

У меня есть эта db-конфигурация в моей локальной среде разработки

$db['default']['hostname'] = 'localhost';
$db['default']['username'] = ''; //Actual username is put inside these quotes
$db['default']['password'] = '';
$db['default']['database'] = ''; //Actual name of database is put inside quotes
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = APPPATH .'cache';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;

Когда я перехожу к этому на рабочий сервер, он не работает, поэтому я попробовал много вещей, но одна вещь, котораяseemed to work должен был изменить DBDriver наMySQLi вместо mysql. Но я также должен был поставить db_debug в FALSE (так что это «сработало» не будет правильным утверждением)

Я много об этом читал, но нигде не нашел ответа на это. (Меня не устраивает: «Измените на debug = false, и это сработает»)

Я хотел посмотреть, в чем же заключается проблема, поэтому я изменил локальный сервер на драйвер mysqli, а затем получил ошибку:

A Database Error Occurred

Unable to connect to your database server using the provided settings.

Filename: C:\Program Files\wamp\www\mellomgarden2\system\database\DB_driver.php

Line Number: 124

После некоторых копаний я вижу, что db_connect () и db_pconnect () работают точно так же:

Если вы посмотрите в систему / база данных / drivers / mysqli / mysqli_driver.php - похоже,connect() а такжеpconnect() работают точно так же, потому чтоpconnect() просто звонитconnect() функция.

так$db['default']['pconnect'] = TRUE; совершенно бесполезно при использовании драйвера mysqli.

function db_connect()
{
    if ($this->port != '')
    {
        return @mysqli_connect($this->hostname, $this->username, $this->password, $this->database, $this->port);
    }
    else
    {
        return @mysqli_connect($this->hostname, $this->username, $this->password, $this->database);
    }

}
// --------------------------------------------------------------------

/**
 * Persistent database connection
 *
 * @access  private called by the base class
 * @return  resource
 */
function db_pconnect()
{
    return $this->db_connect();
}

При более внимательном рассмотрении описанных выше db_connect () и db_pconnect () - ошибки исключаются. Я удалил @ для возвращаемого значения, а затем получил это:

Серьезность: Предупреждение

Сообщение: mysqli_connect (): (08004/1040): слишком много соединений

Имя файла: mysqli / mysqli_driver.php

Номер строки: 76

что намного более объяснительная ошибка

поэтому я подумал, что db_pconnect для драйвера mysqli должен выглядеть примерно так:

function db_pconnect()
    {       
                 $this->hostname = 'p:' . ltrim($this->hostname, 'p:');                                  
                 return $this->db_connect();
    }

Это полная ошибка команды разработчиков CodeIgniter или я что-то упустил?

Ответы на вопрос(1)

Ваш ответ на вопрос