Medoo データベース
webman/medoo は Medoo の機能に接続プール機能を追加し、コルーチンおよび非コルーチン環境をサポートしています。使い方は 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
に新しい設定を追加します。key は任意ですが、ここでは 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, // 接続プール内の接続の最大アイドル時間。タイムアウトすると回収され、接続数が min_connections になるまで閉じられます。
'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]);