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 环境回答(除了一些细节,如 apcu
、obcache
或会话)。
更多信息
设置PDO::ATTR_PERSISTENT
应该可以使用持久连接,但是有一些不愉快的缺点。此 SO 问题中提供了详细信息:What are the disadvantages of using persistent connection in PDO
您可以通过限制同时工作的 PHP worker 的数量来隐式地限制连接数。
不知道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 环境回答(除了一些细节,如 apcu
、obcache
或会话)。
更多信息
设置
PDO::ATTR_PERSISTENT
应该可以使用持久连接,但是有一些不愉快的缺点。此 SO 问题中提供了详细信息:What are the disadvantages of using persistent connection in PDO您可以通过限制同时工作的 PHP worker 的数量来隐式地限制连接数。