데이터베이스 연결
필요한 함수나 클래스 생성자에서 아래 코드를 추가하면 데이터베이스에 연결하여 해당 클래스에서 데이터베이스를 전역적으로 사용할 수 있도록 합니다.
<?php
$db = \Config\Database::connect();
위 함수의 첫 번째 매개 변수에 정보가 없으면 데이터베이스 기본 그룹에 연결됩니다. 대부분의 사람들에게 이것은 선호되는 사용 방법입니다.
위의 줄을 감싸는 메소드가 편의를 위해 제공됩니다.
<?php
$db = db_connect();
사용 가능한 매개 변수
\Config\Database::connect($group = null, bool $getShared = true): BaseConnection
$group
: 데이터베이스 그룹 이름, 구성 클래스의 특성 이름과 일치 하는 문자열. 기본값은 $config->defaultGroup.$getShared
: true/false (boolean). 공유 연결을 반환할지 여부 (아래의 여러 데이터베이스에 연결 참조).
데이터베이스 수동 연결
이 함수의 첫 번째 매개 변수는 ** 선택적으로 ** 구성 파일의 특정 데이터베이스 그룹을 지정하는 데 사용됩니다.
샘플: 구성 파일의 특정 그룹을 선택하려면 아래와 같이 하십시오.
<?php
$db = \Config\Database::connect('group_name');
여기서 group_name
은 구성 파일의 연결 그룹 이름입니다.
동일한 데이터베이스 다중 연결
기본적으로 connect()
메소드는 매번 동일한 데이터베이스 연결 인스턴스를 반환합니다.
동일한 데이터베이스에 대한 별도의 연결이 필요한 경우 두 번째 매개 변수를 false
로 전송하십시오.
<?php
$db = \Config\Database::connect('group_name', false);
다중 데이터베이스 연결
둘 이상의 데이터베이스에 동시에 연결해야 하는 경우 다음과 같이합니다.
<?php
$db1 = \Config\Database::connect('group_one');
$db2 = \Config\Database::connect('group_two');
Note: group_one
과 group_two
라는 단어를 연결중인 특정 그룹 이름으로 변경하십시오.
Note
동일한 연결에서 다른 데이터베이스만 사용해야 할때는 별도의 데이터베이스 구성을 만들 필요가 없습니다.
$db->setDatabase($database2_name);
와 같이하면 필요할 때 다른 데이터베이스로 전환할 수 있습니다.
사용자 설정으로 연결
그룹 이름 대신 데이터베이스 설정 배열을 전달하여 사용자 지정 설정을 사용하는 연결을 얻을수 있습니다. 전달된 배열은 그룹이 구성 파일에 정의된 형식과 같아야합니다.
<?php
$custom = [
'DSN' => '',
'hostname' => 'localhost',
'username' => '',
'password' => '',
'database' => '',
'DBDriver' => 'MySQLi',
'DBPrefix' => '',
'pConnect' => false,
'DBDebug' => (ENVIRONMENT !== 'production'),
'charset' => 'utf8',
'DBCollat' => 'utf8_general_ci',
'swapPre' => '',
'encrypt' => false,
'compress' => false,
'strictOn' => false,
'failover' => [],
'port' => 3306,
];
$db = \Config\Database::connect($custom);
다시 연결 / 연결 유지
PHP로 오랜 시간이 걸리는 무거운 작업(예 : 이미지 처리)으로 인해 데이터베이스 서버의 유휴 시간 초과가 발생하면
추가 쿼리를 보내기 전에 연결을 정상적으로 유지하거나 다시 설정할 수 있는 reconnect()
메소드를 사용하여
서버에 핑(ping)을 하는 것이 좋습니다.
Important
MySQLi 데이터베이스 드라이버를 사용하는 경우 reconnect()
메소드는 서버에 핑(ping)을 하지 않고 연결을 닫은 다음 다시 연결합니다.
<?php
$db->reconnect();
수동 연결 종료
CodeIgniter는 데이터베이스 연결을 지능적으로 처리하지만 연결을 명시적으로 닫을 수 있습니다.
<?php
$db->close();