国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

數(shù)據(jù)庫(kù)快速入門(基于Laravel數(shù)據(jù)庫(kù)組件)

webman/database是基于illuminate/database開(kāi)發(fā)的,并加入了連接池功能,支持協(xié)程和非協(xié)程環(huán)境,用法與laravel相同。

開(kāi)發(fā)者也可以參考使用其它數(shù)據(jù)庫(kù)組件章節(jié)使用ThinkPHP或者其它數(shù)據(jù)庫(kù)。

注意
當(dāng)前手冊(cè)為 webman-v2 版本,如果您使用的是webman-v1版本,請(qǐng)查看 v1版本手冊(cè)

數(shù)據(jù)庫(kù)安裝

composer require -W webman/database illuminate/pagination illuminate/events symfony/var-dumper

安裝后需要restart重啟(reload無(wú)效)

提示
webman/database 依賴于laravel的illuminate/database,所以安裝時(shí)會(huì)自動(dòng)安裝illuminate/database的依賴包。

注意
如果不需要分頁(yè)、數(shù)據(jù)庫(kù)事件、記錄SQL,則只需要執(zhí)行
composer require -W webman/database

數(shù)據(jù)庫(kù)配置

config/database.php


return [
    // 默認(rèn)數(shù)據(jù)庫(kù)
    'default' => 'mysql',

    // 各種數(shù)據(jù)庫(kù)配置
    'connections' => [
        'mysql' => [
            'driver'      => 'mysql',
            'host'        => '127.0.0.1',
            'port'        => 3306,
            'database'    => 'test',
            'username'    => 'root',
            'password'    => '',
            'unix_socket' => '',
            'charset'     => 'utf8',
            'collation'   => 'utf8_unicode_ci',
            'prefix'      => '',
            'strict'      => true,
            'engine'      => null,
            'options' => [
                PDO::ATTR_EMULATE_PREPARES => false, // 當(dāng)使用swoole或swow作為驅(qū)動(dòng)時(shí)是必須的
            ],
            'pool' => [ // 連接池配置
                'max_connections' => 5, // 最大連接數(shù)
                'min_connections' => 1, // 最小連接數(shù)
                'wait_timeout' => 3,    // 從連接池獲取連接等待的最大時(shí)間,超時(shí)后會(huì)拋出異常。僅在協(xié)程環(huán)境有效
                'idle_timeout' => 60,   // 連接池中連接最大空閑時(shí)間,超時(shí)后會(huì)關(guān)閉回收,直到連接數(shù)為min_connections
                'heartbeat_interval' => 50, // 連接池心跳檢測(cè)時(shí)間,單位秒,建議小于60秒
            ],
        ],
    ],
];

除了pool配置外,其它配置與laravel相同。

關(guān)于連接池

  • 每個(gè)進(jìn)程有自己的連接池,進(jìn)程間不共享連接池。
  • 不開(kāi)啟協(xié)程時(shí),業(yè)務(wù)在進(jìn)程內(nèi)排隊(duì)執(zhí)行,不會(huì)產(chǎn)生并發(fā),所以連接池最多只有1個(gè)連接。
  • 開(kāi)啟協(xié)程后,業(yè)務(wù)在進(jìn)程內(nèi)并發(fā)執(zhí)行,連接池會(huì)根據(jù)需要?jiǎng)討B(tài)調(diào)整連接數(shù),最多不超過(guò)max_connections,最少不小于min_connections。
  • 因?yàn)檫B接池連接數(shù)最大為max_connections,當(dāng)操作數(shù)據(jù)庫(kù)的協(xié)程數(shù)大于max_connections時(shí),會(huì)有協(xié)程排隊(duì)等待,最多等待wait_timeout秒,超過(guò)則觸發(fā)異常。
  • 在空閑的情況下(包括協(xié)程和非協(xié)程環(huán)境),連接會(huì)在idle_timeout時(shí)間后被回收,直到連接數(shù)為min_connections(min_connections可為0)。

數(shù)據(jù)庫(kù)使用示例

<?php
namespace app\controller;

use support\Request;
use support\Db;

class UserController
{
    public function db(Request $request)
    {
        $default_uid = 29;
        $uid = $request->get('uid', $default_uid);
        $name = Db::table('users')->where('uid', $uid)->value('username');
        return response("hello $name");
    }
}

我們看到,用法與laravel相同,使用Db::table()方法來(lái)操作數(shù)據(jù)庫(kù)。

編輯于2025-04-18 17:20:05 完善本頁(yè) +發(fā)起討論
贊助商