PHP中的MongoDB数据库连接
问题描述:
我使用下面的代码从PHP连接到我的mongoDB。这里是我的本地主机的扩展信息,同样在beta和prod上。 PHP中的MongoDB数据库连接
我正在使用以下代码连接到数据库。
class WebAPI {
private $mongoClient;
function __construct() {
$mongoClient = new MongoDB\Client("mongodb://database.local:27017");
if(!$mongoClient){
//TODO: Inform status site about failure
http_response_code(500);
die();
}
$statsDB = $mongoClient->stats; //selects database stats
$pageViewsCollection = $statsDB->pageviews;
$result = $pageViewsCollection->insertOne(PageViewInsights::getInfo());
var_dump($result->getInsertedId());
}
}
在SQL数据库中,我们使用连接池。我怀疑mongodb也有一个,我不确定。我搜索了它,但这个新的mongodb 1.1.x版本没有出现。
更好的方法来做到这一点?
UPDATE
正如所说的路易斯·爱德华多·德克里斯托here,我延长了更多的相关信息的问题。
如果连接池不相关,如何处理大量的连接?每个连接需要多少内存,假如我设法为每个HTTP请求只使用一个连接,并且使用这个连接管理所有事务,例如我有一个8GB内存的服务器,CentOS或Ubuntu上的Hexacore Xeon E5 @ 3.1 GHz,单独运行mongod
而没有像apache这样的其他服务器,我可以创建多少个最大连接?我的服务器能够处理多少个并发用户?有什么方法可以在MongoDB 3.2上优化它?
PS:没有信息我能找到有关服务器配置的数据库优化。
答
你的代码看起来不错。关于池:
根据PHP手册:
本节不再相关的1.3.0版本的驱动程序 的,只作为对池 如何使用历史信息工作。 “驱动程序的最新版本没有任何池的概念 ,并且将保持每个进程只有一个连接,对于每个连接 类型(ReplicaSet/standalone/mongos),对于每个凭据 的组合。
http://php.net/manual/pt_BR/mongo.connecting.pools.php
最好的问候, 爱德华多。
那么我们如何管理巨大的连接量呢?有关于此的任何信息?或者这种方法是否有效? – Sibidharan
也许在这种情况下,你不应该担心更多关于你的基础设施,然后你的代码(因为连接是由PHP管理的)?我能想到的就像使用Mongodb副本和簇和碎片一样。请看看:(https://docs.mongodb.com/manual/replication/)和 http://stackoverflow.com/questions/17839962/persistent-connection-or-connection-pooling-in -php54-nginx-phpfpm -mongodb https://www.quora.com/How-should-I-set-up-mongodb-cluster-to-handle-20K+-simultaneous-connections – deChristo
在这种情况下,罚款。我正在更新这个问题,以便进行连接管理和可以建立的最大连接。如果可以,请提供有关这方面的更多数据。 – Sibidharan