Ошибка Lithium Mongodb при удаленном подключении - PullRequest
0 голосов
/ 09 апреля 2011

У меня следующая проблема с Lithium. Когда я подключаюсь к mongodb на моем локальном хосте, все работает хорошо, но когда я подключаюсь к удаленному mongodb на EC2, это выдает мне следующую ошибку:

Неустранимая ошибка: необработанное исключение «MongoCursorException» с сообщением «Выполняется операция» в /Library/WebServer/Documents/v0.4/libraries/lithium/data/source/MongoDb.php:430

Обе версии mongodb одинаковы (1.8.0), и я могу подключиться к удаленному mongodb с помощью оболочки. Я использую литий 0.9.9, драйвер mongo php 1.1.4 и версию php 5.3.4 на Mac OSX Snow Leopard.

Есть предложения?

Обновление: я пытался с последней версией мастера, но все еще есть ошибка. Вы можете просмотреть мою полную трассировку стека здесь: http://pastium.org/view/90c1dd7201eca845913c4101a205a023

1 Ответ

1 голос
/ 23 мая 2012

Эта ошибка часто связана с тайм-аутом соединения с базой данных.

Скорее всего, это происходит, когда веб-сервер и сервер MongoDB находятся на разных хостах, в сетях или провайдерах (например,EC2 в вашем случае) из-за задержки в сети ...

По умолчанию установлен литиевый тайм-аут 100 ms, который может быть слишком медленным для некоторых сетевых конфигураций (однако, как правило, он должен быть в полном порядке).

Это задокументировано здесь: Адаптер Lithium MongoDB

Lithium MongoDB Adapter timeout setting

Вы можете увидеть конфигурацию подключения MongoDB по умолчанию в Lithium здесь: (строка 153 на этомвремя) ...

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

Из комментариев на этой странице,

'timeout' целое число : числомиллисекунды попытка подключения будет ждать до истечения времени ожидания и выдачи исключения.

По умолчанию 100

...