我对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
答案 0 :(得分:1)
此错误通常与数据库连接超时有关。
由于网络延迟,当Web服务器和MongoDB服务器位于不同的主机,网络或提供商(如您的情况下为EC2)时,更有可能发生这种情况......
在Lithium中设置的默认超时为100 ms
,对于某些网络配置来说可能太慢(但通常应该完全没问题。)
此处记录了这些内容:Lithium MongoDB Adapter
您可以在此处看到Lithium中的默认MongoDB连接配置:(此时第153行)......
https://github.com/UnionOfRAD/lithium/blob/master/data/source/MongoDb.php
从该页面的评论中
'timeout'
integer :连接尝试将等待的毫秒数 在超时并抛出异常之前。默认为
100