Я занимаюсь разработкой сайта с использованием PHP и mongodb. Я получаю доступ к mongodb с PECL-mongo , и меня раздражает. Время от времени я получаю такую ошибку (я анонимизировал пути)
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 для Монго? Может ли это быть ошибкой при компиляции (я скомпилирован из исходного кода, но с очень мягкими флагами, -march=native -O2
)?
Кто-нибудь видел это раньше?
При поиске я вижу только ссылки на какую-то глупую игру на Facebook с такой же ошибкой.
EDIT : Я только что понизил свой драйвер PECL до версии 1.1.4 и до сих пор , проблема, кажется, ушла. Так что это может быть просто ошибкой в серии 1.2.x. Если бы кто-нибудь мог пролить на него свет, это было бы здорово.
РЕДАКТИРОВАТЬ : Я не делаю ничего сложного, код, который имеет проблему, выглядит примерно так:
$m = new Mongo();
$collection = $m->my_db->collection;
$results = $collection->find(array("favorite"=>true))->limit(5);