fatfree 数据库连接池

fatfree DB connection pool

不知道f3有没有DB连接池的概念。 当我检查 CMS 的示例代码时,似乎数据库连接是在控制器的构造中创建的。

function __construct() {
    $f3=Base::instance();
    // Connect to the database
    $db=new DB\SQL($f3->get('db'));

因此每次向任何控制器发出请求时,都会创建一个新的数据库连接。 如果服务器负载过大,可能会导致DB饱和。

f3(或任何插件)是否支持数据库连接池,以便我们可以限制数据库连接数? 当数据库连接数超过池大小时,请求被放入队列。

在控制器中创建数据库连接不是强制性的,因为这只是一个简单的例子。我会反对它并建议至少使用服务位置或者 - 甚至更好 - 依赖注入。

F3 没有池管理。如果我没记错的话 PHP 中没有池管理。可能有一个添加此功能的 PECL 模块。请求通常(PHP-FPM、FCGI、mod_php)由干净的 PHP 环境回答(除了一些细节,如 apcuobcache 或会话)。

更多信息

  • 设置PDO::ATTR_PERSISTENT应该可以使用持久连接,但是有一些不愉快的缺点。此 SO 问题中提供了详细信息:What are the disadvantages of using persistent connection in PDO

  • 您可以通过限制同时工作的 PHP worker 的数量来隐式地限制连接数。