Rumah  >  Artikel  >  rangka kerja php  >  Bagaimana untuk mengkonfigurasi kumpulan sambungan pangkalan data dalam thinkphp

Bagaimana untuk mengkonfigurasi kumpulan sambungan pangkalan data dalam thinkphp

PHPz
PHPzasal
2023-04-21 10:06:581307semak imbas

Apabila aplikasi Internet menjadi semakin kompleks, permintaan untuk pangkalan data juga semakin tinggi. Dalam kes konkurensi yang tinggi, kaedah sambungan pangkalan data tradisional selalunya tidak dapat memenuhi keperluan Pada masa ini, kumpulan sambungan pangkalan data amat penting. Apabila membangun menggunakan rangka kerja thinkphp, anda juga boleh menggunakan kumpulan sambungan pangkalan data untuk meningkatkan prestasi konkurensi pangkalan data. Artikel ini akan menerangkan cara mengkonfigurasi kumpulan sambungan pangkalan data.

1. Apakah kumpulan sambungan pangkalan data

Sambungan pangkalan data tradisional ialah cara sumber eksklusif Setiap sambungan menggunakan sumber sistem hilang pembaziran dan kelewatan tindak balas. Kumpulan sambungan pangkalan data ialah kaedah perkongsian sambungan yang menyimpan cache sambungan dalam kumpulan sambungan Berbilang benang boleh berkongsi sambungan dalam kumpulan sambungan yang sama, dengan itu mengurangkan penggunaan sumber sistem.

2. Bagaimana untuk mengkonfigurasi kumpulan sambungan pangkalan data dalam thinkphp

1. Tambahkan kandungan berikut pada fail konfigurasi aplikasi

return [
    //数据库配置信息
    'database' => [
        // 数据库类型
        'type'            => 'mysql',
        // 服务器地址
        'hostname'        => '127.0.0.1',
        // 数据库名
        'database'        => 'test',
        // 用户名
        'username'        => 'root',
        // 密码
        'password'        => '',
        // 端口
        'hostport'        => '',
        // 数据库连接参数
        'params'          => [
            // 数据库连接池配置
            \think\helper\Arr::except(\Swoole\Coroutine::getContext(),'__timer'),
        ],
        // 数据库编码默认采用utf8
        'charset'         => 'utf8',
        // 数据库表前缀
        'prefix'          => 'think_',
    ],
];

2. Tambahkan yang berikut pada index fail kemasukan.php Kandungan

use think\App;
use think\facade\Config;
use think\facade\Db;
use think\swoole\Server;
use think\swoole\websocket\socketio\Handler;
use think\swoole\websocket\Websocket;
use think\swoole\websocket\socketio\Packet;
use think\swoole\coroutine\Context;
use Swoole\Database\PDOPool;
use Swoole\Coroutine\Scheduler;

//定义应用目录
define('APP_PATH', __DIR__ . '/app/');

// 加载框架引导文件
require __DIR__ . '/thinkphp/vendor/autoload.php';
require __DIR__ . '/thinkphp/bootstrap.php';

// 扩展Loader注册到自动加载
\think\Loader::addNamespace('swoole', __DIR__ . '/thinkphp/library/swoole/');

// 初始化应用
App::getInstance()->initialize();

//获取数据库配置信息
$dbConfig = Config::get('database');

//创建数据库连接池
$pool = new PDOPool($dbConfig['type'], $dbConfig);

//设置连接池的参数
$options = [
    'min' => 5,
    'max' => 100,
];

$pool->setOptions($options);

//连接池单例模式
Context::set('pool', $pool);

//启动Swoole server
$http = (new Server())->http('0.0.0.0', 9501)->set([
    'enable_static_handler' => true,
    'document_root' => '/data/wwwroot/default/public/static',
    'worker_num' => 2,
    'task_worker_num' => 2,
    'daemonize' => false,
    'pid_file' => __DIR__.'/swoole.pid'
]);

$http->on('WorkerStart', function (swoole_server $server, int $worker_id) {

    //功能实现

});

$http->start();

Fungsi kod di atas adalah untuk mencipta kumpulan sambungan PDOPool dan menetapkan bilangan sambungan minimum kepada 5 dan bilangan sambungan maksimum kepada 100. Kumpulan sambungan disimpan dalam ingatan melalui Konteks untuk digunakan oleh aplikasi thinkphp lanjutan.

3. Cara menggunakan kolam sambungan

Dalam proses menggunakan kolam sambungan, anda perlu memberi perhatian kepada perkara berikut:

  1. Singleton mod kolam sambungan adalah berbeza Fungsi menggunakan objek kolam sambungan yang sama untuk memastikan ketekalan parameter kolam sambungan.
  2. Selepas melengkapkan operasi pangkalan data, jangan gunakan operasi penutupan MySQL dengan serta-merta, tetapi terus kembalikan ke kumpulan sambungan. Kerana sambungan sebenarnya dimasukkan semula ke dalam kolam sambungan, bukan ditutup.
  3. Jangan anggap kumpulan sambungan sebagai "badan abadi". Kaedah untuk melepaskan kumpulan sambungan ialah: $pool->close().

Berikut ialah contoh penggunaan kumpulan sambungan:

<?php
namespace app\index\controller;

use think\Controller;
use Swoole\Database\PDOPool;

class Index extends Controller
{
    public function index()
    {
        //获取连接池
        $pool = \Swoole\Coroutine::getContext(&#39;pool&#39;);
        
        //从连接池中取出一个连接
        $connection = $pool->getConnection();
        
        //执行操作
        $result = $connection->query('SELECT * FROM `user`');
        
        //归还连接给连接池
        $pool->putConnection($connection);
        
        //返回结果
        return json($result);
    }
}

4 Ringkasan

Menggunakan kumpulan sambungan pangkalan data boleh meningkatkan prestasi dengan ketara pangkalan data dan mengurangkan bilangan sumber pembaziran sambungan Tradisional. Melalui langkah di atas, kita boleh mengkonfigurasi dan menggunakan kumpulan sambungan pangkalan data dalam rangka kerja thinkphp. Sudah tentu, apabila menggunakan kumpulan sambungan, anda perlu memastikan sambungan dikeluarkan secara munasabah untuk mengelakkan pembaziran sumber sistem dan mengurangkan prestasi.

Atas ialah kandungan terperinci Bagaimana untuk mengkonfigurasi kumpulan sambungan pangkalan data dalam thinkphp. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn