我正在使用 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);