2016-11-10 52 views
1

我使用下面的代码从PHP连接到我的mongoDB。这里是我的本地主机的扩展信息,同样在beta和prod上。 version statPHP中的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:没有信息我能找到有关服务器配置的数据库优化。

回答

1

你的代码看起来不错。关于池:

根据PHP手册:

本节不再相关的1.3.0版本的驱动程序 的,只作为对池 如何使用历史信息工作。 “驱动程序的最新版本没有任何池的概念 ,并且将保持每个进程只有一个连接,对于每个连接 类型(ReplicaSet/standalone/mongos),对于每个凭据 的组合。

http://php.net/manual/pt_BR/mongo.connecting.pools.php

最好的问候, 爱德华多。

+0

那么我们如何管理巨大的连接量呢?有关于此的任何信息?或者这种方法是否有效? – Sibidharan

+0

也许在这种情况下,你不应该担心更多关于你的基础设施,然后你的代码(因为连接是由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

+0

在这种情况下,罚款。我正在更新这个问题,以便进行连接管理和可以建立的最大连接。如果可以,请提供有关这方面的更多数据。 – Sibidharan