Повторное подключение базы данных Codeigniter не работает - PullRequest
2 голосов
/ 29 февраля 2012

У меня есть контроллер, который выполняет загрузку на сервер хоста, и другой контроллер, который выполняет загрузку на YouTube. После того, как первый контроллер выполняет свою работу, он перенаправляет на второй. После особенно длительного процесса загрузки, который включает YouTube, я получаю сообщение об ошибке «Сервер MySQL ушел»

Я использовал этот код для повторного подключения к базе данных в Codeigniter для решения этой проблемы.

$this->db->reconnect();

Вместо этого я получил ошибку

A Database Error Occurred
Unable to select the specified database: test_database
....

Я пытался добавить этот код до и после кода «переподключения», но это не помогло (ниже «test» - это имя активной группы в конфигурации базы данных, которую я использую.)

$this->load->database('test');

У кого-нибудь есть идеи, как решить эту проблему?

Ответы [ 2 ]

5 голосов
/ 29 февраля 2012

Вызов reconnect () с автоматическим повторным подключением, отключенным в MySQL, вызовет ошибку, и в зависимости от вашего статуса ошибки в вашем конфигурационном файле и установке PHP отобразит и зарегистрирует ошибку.

Лучший способ сделать это - просто закрыть соединение и восстановить соединение вручную:


$this->db->close();
$this->db->initialize();  

Надеюсь, это поможет

2 голосов
/ 09 июля 2012

Возможно, вы захотите расширить класс базы данных, а затем реализовать собственный процесс переподключения.Вы можете реализовать что-то вроде этого:

...
if(!mysql_ping($this -> conn_id)) {
    $this -> _close();
    $this -> db_connect();
}
...

Чтобы узнать, как расширить класс базы данных, смотрите эту ссылку:

Расширение драйверов базы данных

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