我想知道f3是否具有数据库连接池的概念。 当我检查CMS的示例代码时,似乎数据库连接是在控制器的构造中创建的。
function __construct() {
$f3=Base::instance();
// Connect to the database
$db=new DB\SQL($f3->get('db'));
因此,每当对任何控制器发出请求时,都会创建一个新的数据库连接。 如果服务器负载很大,则可能导致数据库饱和。
f3(或任何插件)是否支持数据库连接池,以便我们可以限制数据库连接的数量? 数据库连接数超过池大小时,请求将放入队列中。
答案 0 :(得分:0)
在控制器中创建数据库连接不是强制性的,因为这只是一个简单的示例。我不建议这样做,建议至少使用服务位置,或者甚至更好地使用依赖项注入。
F3没有池管理。如果我没有记错的话,PHP中没有池管理。可能有一个PECL模块添加了此功能。干净的PHP环境通常会回答请求(PHP-FPM,FCGI,mod_php
)(某些细节除外,例如apcu
,obcache
或会话)。
更多信息
应该可以通过设置PDO::ATTR_PERSISTENT
使用持久连接,但是有一些不愉快的缺点。有关此问题的详细信息,请参见:What are the disadvantages of using persistent connection in PDO
您可以通过限制同时工作的PHP工作程序的数量来隐式限制连接的数量。