【问题标题】:MongoDB Database Connection in PHPPHP中的MongoDB数据库连接
【发布时间】:2017-03-25 03:01:25
【问题描述】:

我正在使用以下代码从 PHP 连接到我的 mongoDB。这是我本地主机的扩展信息,在 beta 和 prod 上也是如此。

我正在使用以下代码连接数据库。

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 版本没有任何方便之处。

有更好的方法吗?

更新

正如 Luiz Eduardo de Christo here 所说,我正在扩展问题以获得更多相关信息。

如果连接池不相关,如何处理大量连接?每个连接将占用多少 RAM,前提是我设法为每个 HTTP 请求仅使用一个连接并使用该连接管理所有事务,例如我有一台具有 8GB RAM 的服务器,在 CentOS 或 Ubuntu 上使用 Hexacore Xeon E5 @ 3.1 GHz,单独运行mongod 没有任何其他服务器(如apache),我最多可以建立多少连接?我的服务器能够处理多少并发用户?有没有办法在 MongoDB 3.2 上对此进行优化?

PS:我找不到关于服务器配置方面的数据库优化的信息。

【问题讨论】:

    标签: php mongodb


    【解决方案1】:

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

    根据PHP手册:

    从 1.3.0 版本开始,此部分不再相关 驱动程序,仅用作有关如何汇集的历史信息 曾经工作。 “最新版本的驱动已经没有池化的概念了 并且对于每个连接,每个进程只维护一个连接 类型(ReplicaSet/standalone/mongos),用于每个凭证 组合。”

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

    最好的问候, 爱德华多。

    【讨论】:

    • 那么我们如何管理庞大的连接量呢?有这方面的信息吗?还是这种方法有效?
    • 也许在这种情况下,您是否应该更担心您的基础设施而不是您的代码(因为连接是由 PHP 管理的)?我能想到的只是将 Mongodb 副本与集群和分片一起使用。请看一下:(docs.mongodb.com/manual/replication)和stackoverflow.com/questions/17839962/…quora.com/…
    • 在这种情况下,很好。我正在更新这个问题,用于连接管理和一个可以建立的最大连接。如果可以,请提供有关这方面的更多数据。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-19
    • 1970-01-01
    • 2022-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多