bardiz12/laravel-connection-pool

dev-main 2023-02-06 06:57 UTC

This package is auto-updated.

Last update: 2024-09-06 10:06:45 UTC


README

本包使用 openswoole 实现Laravel中的连接池。

注意

本包仍在开发中,目前尚未发布稳定版本,只有 dev-master 版本。

支持的数据库

  • MySql

安装

  • composer require "bardiz12/laravel-connection:dev-main"
  • 设置数据库配置
    • 将数据库的驱动改为 mysql-pool
    • 您可以将 pool_count 配置设置为定义默认连接数
    • 您可以将 fill 配置设置为定义是否自动填充连接池。
  • 示例
    ///config/database.php
    <?php
    ...
    'mysql' => [
            'driver' => 'mysql-pool',
            'url' => env('DATABASE_URL'),
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_general_ci',
            'prefix' => '',
            'prefix_indexes' => true,
            'strict' => true,
            'engine' => null,
            'options' => extension_loaded('pdo_mysql') ? array_filter([
                PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
            ]) : [],
            // 'fill' => true,
            // 'pool_count' => 11
        ],
    ...

本包的功能

  • 通过自定义 DatabaseManager Class 覆盖 Laravel 的 DatabaseManager 类
  • 覆盖 Laravel 的 ConnectionFactory 类
  • 当 Laravel 调用 DatabaseManager::connection(string $name) 并将数据库配置设置为 mysql-pool 时,从池中检索连接

已知问题

  • 无法使用 Laravel 的方式处理事务

待办事项

  • 为池创建自定义事务方法
  • 处理 Schema 函数(主要针对迁移)
  • 编写测试用例