6

我正在使用 PHP 和 mongodb 开发一个网站。我使用PECL-mongo访问 mongodb ,但遇到了麻烦。时不时地,我会收到这样的错误(我已经匿名化了路径)

Fatal error: Uncaught exception 'MongoCursorException' with message 'couldn't get response header' in
    /PATH/index.php:38 Stack trace: #0 
    /PATH/index.php(38): MongoCursor->rewind() #1 
    /PATH/template.inc(29): get_sidebar() #2 
    /PATH/index.php(13): 
    require_once('PATH/...') #3 {main} thrown in PATH/index.php on line 38

根据文档,这意味着:

驱动程序无法从数据库中获取回复标头,因此它放弃了。检查数据库是否仍在运行并且网络已连接并再次尝试查询。

但我知道数据库已启动,因为我是在我自己的机器上通过环回本地执行此操作。与外界没有任何联系。

简单地再试一次通常会奏效。这可能是 PHP 的 mongo 驱动程序中的错误吗?这可能是一个“错误编译”问题(我从源代码编译,但带有非常良性的标志,-march=native -O2)?

有没有人见过这个?

环顾四周,我只看到对一些具有相同错误的愚蠢 Facebook 游戏的引用。

编辑:我刚刚将我的 PECL 驱动程序降级到 1.1.4 版,到目前为止,问题似乎已经消失了。所以这可能只是 1.2.x 系列的一个 bug。如果有人能对此有所了解,那就太好了。

编辑:我在这里没有做任何复杂的事情,有问题的代码看起来像这样:

$m = new Mongo();
$collection = $m->my_db->collection;
$results = $collection->find(array("favorite"=>true))->limit(5);
4

1 回答 1

1

我通过获取新版本 mogodb.dll 解决了这个问题,您可以看到http://www.mongodb.org/display/DOCS/PHP+Language+Center

于 2012-04-04T14:08:42.513 回答