【问题标题】:Error configuring multiples mongodb servers in Symfony 2.8在 Symfony 2.8 中配置多个 mongodb 服务器时出错
【发布时间】:2017-11-02 13:26:36
【问题描述】:

我已经在 Heroku 中托管了我的应用程序 (Symfony 2.8)。我有一个 mongoDB 插件来存储会话,它工作正常,但是当我尝试添加副本服务器时,我遇到了一些问题。 mongodb 插件默认提供副本。我是说

我来说明一下我的环境和配置:

环境

我想使用这个网址(这是 Heroku 中的 mongodb 插件提供给我的)

MONGOLAB_URI = "mongodb://heroku_user:heroku_password@ds245975-a0.mlab.com:45975,ds245975-a1.mlab.com:45975/heroku_3b4l8zhl?replicaSet=rs-ds245975"

如果我使用这个是有效的:

MONGOLAB_URI = mongodb://heroku_user:heroku_password@ds245975-a0.mlab.com:45975/heroku_3b4l8zhl

会议

parameters.php 我得到这个信息:

$mongoLabUri = getenv('MONGOLAB_URI');
    $mongoLabUri = getenv('MONGOLAB_URI');
    if (false !== $mongoLabUri) {
        $matches = [];
        preg_match(
            '#mongodb://(?P<user>.*?):(?P<password>.*?)@(?P<server>.*)/(?P<database>[^?]*)#',
            $mongoLabUri,
            $matches
        );

        $container->setParameter('mongo_server', 'mongodb://'.$matches['user'].':'.$matches['password'].'@'.$matches['server']."/".$matches['database']);
        $container->setParameter('mongo_database', $matches['database']);
}

在配置文件中,我将会话处理程序配置为使用以下参数:

config.yml

doctrine_mongodb:
    connections:
        default:
            server: %mongo_server%
            options: {}
    default_database: %mongo_database%
    document_managers:
        default:
            auto_mapping: true

services:
    session.handler.mongo:
        class: Symfony\Component\HttpFoundation\Session\Storage\Handler\MongoDbSessionHandler
        arguments: [@mongo, %mongo.session.options%]

    mongo.connection:
        class: MongoDoctrine\MongoDB\Connection
        factory_service: doctrine.odm.mongodb.document_manager
        factory_method: getConnection
        calls:
           - [initialize, []]
    mongo:
        class: Mongo
        factory_service: mongo.connection
        factory_method: getMongo

parameters:
    mongo.session.options:
        database: %mongo_database%
        collection: session

我尝试过的事情

一切正常。当我尝试设置副本时,我遇到了不同的问题。好像有什么误解,我现在看不到。

欢迎任何帮助/提示。

【问题讨论】:

    标签: mongodb symfony session


    【解决方案1】:

    我需要这样修改doctrine_mongodb的配置:

    doctrine_mongodb:
        connections:
            default:
                server: %mongo_server%
                options:
                    connect: true
                    replicaSet: true
                    slaveOkay: true
        default_database: %mongo_database%
        document_managers:
            default:
                auto_mapping: true
    

    现在正在工作

    【讨论】:

      猜你喜欢
      • 2012-04-18
      • 1970-01-01
      • 2018-12-20
      • 2016-05-27
      • 2017-10-16
      • 2016-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多