Medoo 데이터베이스

webman/medooMedoo를 기반으로 연결 풀 기능을 추가하였으며, 코루틴 및 비코루틴 환경을 지원합니다. 사용법은 Medoo와 동일합니다.

주의
현재 매뉴얼은 webman v2 버전입니다. 만약 webman v1 버전을 사용 중이라면 v1 버전 매뉴얼을 확인하시기 바랍니다.

설치

composer require webman/medoo

Medoo 데이터베이스 구성

구성 파일 위치는 config/plugin/webman/medoo/database.php입니다.

Medoo 데이터베이스 사용

<?php
namespace app\controller;

use support\Request;
use support\Medoo;

class Index
{
    public function index(Request $request)
    {
        $user = Medoo::get('user', '*', ['uid' => 1]);
        return json($user);
    }
}


Medoo::get('user', '*', ['uid' => 1]);
와 같음
Medoo::instance('default')->get('user', '*', ['uid' => 1]);

Medoo 다중 데이터베이스 구성

구성
config/plugin/webman/medoo/database.php에 새 구성을 추가하며, 키는 임의로 지정할 수 있습니다. 여기서는 other를 사용합니다.

<?php
return [
    'default' => [
        'type' => 'mysql',
        'host' => 'localhost',
        'database' => 'database',
        'username' => 'username',
        'password' => 'password',
        'charset' => 'utf8mb4',
        'collation' => 'utf8mb4_general_ci',
        'port' => 3306,
        'prefix' => '',
        'logging' => false,
        'error' => PDO::ERRMODE_EXCEPTION,
        'option' => [
            PDO::ATTR_CASE => PDO::CASE_NATURAL
        ],
        'command' => [
            'SET SQL_MODE=ANSI_QUOTES'
        ],
        'pool' => [ // 연결 풀 구성
            'max_connections' => 5, // 최대 연결 수
            'min_connections' => 1, // 최소 연결 수
            'wait_timeout' => 60,   // 연결 풀에서 연결을 얻기 위한 대기 최대 시간, 타임아웃 시 예외 발생
            'idle_timeout' => 3,    // 연결 풀 내 연결 최대 유휴 시간, 타임아웃 시 회수, 최소 연결 수 유지
            'heartbeat_interval' => 50, // 연결 풀 하트비트 검토 시간, 단위 초, 60초 미만 권장
        ]
    ],
    // 여기서 other 구성을 추가하였습니다
    'other' => [
        'type' => 'mysql',
        'host' => 'localhost',
        'database' => 'database',
        'username' => 'username',
        'password' => 'password',
        'charset' => 'utf8mb4',
        'collation' => 'utf8mb4_general_ci',
        'port' => 3306,
        'prefix' => '',
        'logging' => false,
        'error' => PDO::ERRMODE_EXCEPTION,
        'option' => [
            PDO::ATTR_CASE => PDO::CASE_NATURAL
        ],
        'command' => [
            'SET SQL_MODE=ANSI_QUOTES'
        ],
        'pool' => [
            'max_connections' => 5,
            'min_connections' => 1,
            'wait_timeout' => 60,
            'idle_timeout' => 3,
            'heartbeat_interval' => 50,
        ],
    ],
];

Medoo 데이터베이스 사용

$user = Medoo::instance('other')->get('user', '*', ['uid' => 1]);

Medoo 공식 문서를 참조하십시오.