CodeIgniter Несколько баз данных Постоянное соединение? - PullRequest
7 голосов
/ 20 апреля 2011

Я использую несколько баз данных в своем приложении CodeIgniter и много читал, что постоянные соединения должны быть отключены .

Почему эта мера рекомендуется и все еще необходима в новейшая версия, 2.0.2?

Я делаю что-то вроде

$db2 = $this->load->database("dbname", TRUE);

Ответы [ 2 ]

1 голос
/ 26 марта 2015

Документация по воспламенителю кода не объясняется

К сожалению, документация Code Igniter для 2.0.2 не объясняет, почему их следует отключать. Это просто объясняет, что есть настройка для этого. Причина этого, скорее всего, заключается в том, что это на самом деле не функциональность Code Igniter, а скорее базовая функциональность PHP / MySQL. PHP имеет очень хорошую и подробную страницу в своей документации о постоянных соединениях.

Объяснение от администратора сервера (я)

По сути, это сводится к производительности . Если у вас есть небольшое количество пользователей, которые находятся в Калифорнии, а ваш сервер баз данных MySQL находится в Швейцарии, будет существенная нагрузка на подключение к серверу MySQL (по сравнению с подключением к MySQL на том же сервере в Калифорнии). ). Постоянное соединение предотвратит повторное подключение каждый раз, когда вы захотите что-то найти с MySQL. Есть также много других проблем, которые могут вызвать издержки соединения, такие как способ, которым настроен сервер или база данных. Помимо производительности, это может также вызвать проблемы, если соединение закрывается неправильно, приводя к заблокированным таблицам.

Почему рекомендуется отключать

Причина, по которой этот параметр не является идеальным для большинства серверов, заключается в том, что если у вас более 60 пользователей, одновременно использующих вашу базу данных, или если в вашей конфигурации MySQL задано максимальное количество соединений, вы быстро достигнете максимальное количество соединений , и это может привести к ошибкам базы данных или сбоям сервера и т. д.

0 голосов
/ 07 августа 2018

Это база данных по умолчанию: $ db ['default'] = массив ('dsn' => '', 'hostname' => 'localhost', 'username' => 'root', 'password' => '',' database '=>' mydatabase ',' dbdriver '=>' mysqli ',' dbprefix '=>' ',' pconnect '=> TRUE,' db_debug '=> (ENVIRONMENT! ==' production '),'cache_on' => FALSE, 'cachedir' => ',' char_set '=>' utf8 ',' dbcollat ​​'=>' utf8_general_ci ',' swap_pre '=>' ', encrypt' => FALSE, 'compress'=> FALSE,' stricton '=> FALSE,' failover '=> array (),' save_queries '=> TRUE);Добавьте другую базу данных внизу файла database.php $ db ['second'] = array ('dsn' => '', 'hostname' => 'localhost', 'username' => 'root', 'password'=> '', 'database' => 'mysecond', 'dbdriver' => 'mysqli', 'dbprefix' => '', 'pconnect' => TRUE, 'db_debug' => (ENVIRONMENT! == 'production'),' cache_on '=> FALSE,' cachedir '=>' ',' char_set '=>' utf8 ',' dbcollat ​​'=>' utf8_general_ci ',' swap_pre '=>' ',' encrypt '=> FALSE, 'compress' => FALSE, 'stricton' => FALSE, 'failover' => array (), 'save_queries' => TRUE);В файле конфигурации autoload.php $ autoload ['library'] = array ('database', 'email', 'session');База данных по умолчанию работает нормально, автоматически загружая библиотеку базы данных, но загружая и загружая вторую базу данных, используя конструктор в модели и контроллере ... db2 = $ this-> load-> database ('second', TRUE);} public function getsecondUsers () {$ query = $ this-> db2-> get ('members');return $ query-> result ();}}?>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...