bardiz12 / laravel-connection-pool
Laravel 连接池
dev-main
2023-02-06 06:57 UTC
Requires
- php: ^8.1
- illuminate/database: ^9.0
- openswoole/core: ^22.1
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 函数(主要针对迁移)
- 编写测试用例