Base de données Medoo

webman/medoo ajoute des fonctionnalités de pool de connexions basées sur Medoo et prend en charge les environnements de coroutine et non-coroutine, l'utilisation est la même que celle de Medoo.

Attention
Ce manuel est pour la version webman v2, si vous utilisez la version webman v1, veuillez consulter le manuel de la version v1

Installation

composer require webman/medoo

Configuration de la base de données Medoo

L'emplacement du fichier de configuration est config/plugin/webman/medoo/database.php

Utilisation de la base de données 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);
    }
}

Astuce
Medoo::get('user', '*', ['uid' => 1]);
équivaut à
Medoo::instance('default')->get('user', '*', ['uid' => 1]);

Configuration de plusieurs bases de données Medoo

Configuration
Ajoutez une nouvelle configuration dans config/plugin/webman/medoo/database.php, la clé peut être n'importe quoi, ici nous utilisons 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' => [ // Configuration du pool de connexions
            'max_connections' => 5, // Nombre maximal de connexions
            'min_connections' => 1, // Nombre minimal de connexions
            'wait_timeout' => 60,   // Temps d'attente maximal pour obtenir une connexion du pool, une exception sera levée après le timeout
            'idle_timeout' => 3,    // Temps d'inactivité maximal d'une connexion dans le pool, sera fermé après le timeout, jusqu'à ce que le nombre de connexions soit égal à min_connections
            'heartbeat_interval' => 50, // Temps de détection de heartbeat du pool de connexions, en secondes, recommandé inférieur à 60 secondes
        ]
    ],
    // Ici, une nouvelle configuration 'other' a été ajoutée
    '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,
        ],
    ],
];

Utilisation de la base de données Medoo

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

Voir Documentation officielle de Medoo