2020-08-17 21:53:28
Laravel 本身未内置数据库连接池,但可通过 Swoole、PHP-PM 或 ProxySQL 等扩展组件实现连接复用。以下是具体配置方法:
一、使用 Swoole 驱动实现长连接池Swoole 提供常驻内存的 PHP 运行环境,通过协程连接池维持数据库长连接,避免重复握手开销。
执行命令:pecl install swoole。
在 config/database.php 中为 MySQL 连接添加 Swoole 兼容配置:'mysql' => [ 'driver' => 'mysql', 'pool' => true, // 启用连接池 'min_connections' => 5, // 最小连接数 'max_connections' => 20, // 最大连接数 // 其他配置...],
使用 Swoole 启动命令:php bin/laravels start,确保请求由 Swoole 处理而非传统 FPM。
Laravel-Telescope 可监控数据库连接频率与生命周期,辅助判断是否需要引入外部池化方案。
执行命令:composer require laravel/telescope。
执行命令:php artisan telescope:install 和 php artisan migrate。
访问 /telescope 路径,查看每次请求的数据库交互详情,识别连接峰值时段与闲置情况。
PHP-PM 将 Laravel 应用运行在多进程模式下,主进程初始化数据库连接后由子进程复用,减少重复连接成本。
执行命令:composer require php-pm/php-pm。
执行命令:vendor/bin/ppm start --bridge=HttpKernel --host=127.0.0.1 --port=8080。
在 config/database.php 中设置:'mysql' => [ 'driver' => 'mysql', 'persistent' => true, // 启用持久连接 // 其他配置...],
ProxySQL 是独立于 PHP 的中间件,可在数据库前层统一管理连接池,适用于分布式部署场景。
下载并安装 ProxySQL,启动服务监听特定端口(如 6033)。
在 .env 文件中修改数据库配置:DB_HOST=ProxySQL_IPDB_PORT=6033
登录 ProxySQL 管理界面,配置后端真实数据库地址,并设置最大连接数与空闲超时时间。