我想知道f3是否具有DB连接池的概念。当我检查CMS的示例代码时,似乎在控制器的构造中创建了DB连接。
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