远程连接上的Lith Mongodb错误

时间:2011-04-08 21:44:04

标签: php mongodb lithium

我对Lithium有以下问题。当我连接到我的localhost上的mongodb时,一切正常,但是当我连接到EC2上的远程mongodb时,它给出了以下错误:

致命错误:未处理的异常'MongoCursorException',并在/Library/WebServer/Documents/v0.4/libraries/lithium/data/source/MongoDb.php:430

两个mongodb版本都是相同的(1.8.0),我可以使用shell连接到我的远程mongodb。我在Mac osx雪豹上运行锂0.9.9,mongo php驱动程序1.1.4和php版本5.3.4。

有什么建议吗?

更新:我尝试过最新的主版本,但仍然有错误。您可以在此处查看我的完整堆栈跟踪:http://pastium.org/view/90c1dd7201eca845913c4101a205a023

1 个答案:

答案 0 :(得分:1)

此错误通常与数据库连接超时有关。

由于网络延迟,当Web服务器和MongoDB服务器位于不同的主机,网络或提供商(如您的情况下为EC2)时,更有可能发生这种情况......

在Lithium中设置的默认超时为100 ms,对于某些网络配置来说可能太慢(但通常应该完全没问题。)

此处记录了这些内容:Lithium MongoDB Adapter

Lithium MongoDB Adapter timeout setting

您可以在此处看到Lithium中的默认MongoDB连接配置:(此时第153行)......

https://github.com/UnionOfRAD/lithium/blob/master/data/source/MongoDb.php

从该页面的评论中

  

'timeout' integer :连接尝试将等待的毫秒数   在超时并抛出异常之前。

     

默认为100