【问题标题】:Mongodb check if connection is ok via Laravel/PHPMongodb 通过 Laravel/PHP 检查连接是否正常
【发布时间】:2017-03-24 13:17:06
【问题描述】:

我正在使用 laravel 5.2 和 MongoDB 3.2。

我想在我的应用程序启动之前测试连接是否正常(我不能使用 DB 外观),在独白配置中。如果连接不正常,我将使用登录文件。

根据建议,我正在测试 MongoClient、Mongo 和 MongoDB\Client,并使用启用的任何内容。

我正在尝试按以下方式测试 mongo connect:

$mongoClient = new \MongoDB\Client('mongodb://localhost:27017');
$mongoClient->selectCollection('mydb', 'mycollection');

这就是回报:

Client {   
    +manager: Manager {#21}
    +uri: "mongodb://localhost:27017"   
    +typeMap: [
        array => "MongoDB\Model\BSONArray",
        document => "MongoDB\Model\BSONDocument",
        root => "MongoDB\Model\BSONDocument"   
    ]
}

最后,我的问题:

  • 是否存在在应用启动前使用 DB 外观的方法?
  • 测试 MongoDB 与 PHP 连接的正确方法是什么?

如果您有其他建议,我将不胜感激。

【问题讨论】:

  • Finnaly 我在开火时遇到异常:$mongoClient->mydb->mycollection->findOne()。这解决了我的问题,但我的问题仍然存在。 :)

标签: php mongodb laravel


【解决方案1】:

根据 PHP 文档the driver connects to the database lazily (http://php.net/manual/en/mongodb-driver-manager.getservers.php),测试连接的唯一方法应该是实际执行您评论中所述的findOne() 之类的命令。

另外,如果此时DB或Collection的名称不确定,可以使用listDatabases()方法,如果连接失败也会抛出异常。

【讨论】:

    【解决方案2】:

    使用这种方式可以检查 MongoDB 与 PHP 的连接:

    $connection = new MongoClient(); // connects to localhost:27017
    $connection = new MongoClient( "mongodb://example.com" ); // connect to a remote host (default port: 27017)
    $connection = new MongoClient( "mongodb://example.com:65432" ); // connect to a remote host at a given port
    

    【讨论】:

    • 不,这不会触发任何错误或异常。 (请记住,我需要为我列出的 3 个类做一些事情)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多