2011-04-08 4 views
0

J'ai le problème suivant avec Lithium. Lorsque je me connecte à mongodb sur mon localhost tout fonctionne bien, mais quand je me connecte à mon mongodb distant sur EC2, il me donne l'erreur suivante:Lithium Mongodb erreur sur la connexion à distance

Erreur fatale: Exception non interceptée 'MongoCursorException' avec le message 'Opération en cours' dans /Library/WebServer/Documents/v0.4/libraries/lithium/data/source/MongoDb.php:430

les deux versions MongoDB sont les mêmes (1.8.0) et je peux me connecter à mon mongodb à distance avec La coquille. Je cours le lithium 0.9.9, mongo php driver 1.1.4 et php version 5.3.4, sur Mac OS X Snow Leopard.

Des suggestions?

Mise à jour: J'ai essayé avec la dernière version principale, mais j'ai toujours l'erreur. Vous pouvez voir ma trace de pile complète ici: http://pastium.org/view/90c1dd7201eca845913c4101a205a023

+0

Il est avéré être le délai d'expiration par défaut a été défini à 100 et en raison de ma latence réseau élevée, la connexion a échoué. – Beatlevic

+1

Cela ressemblait à quelque chose comme ça, n'hésitez pas à poser vos questions sur le canal IRC: 'irc: // irc.freenode.net/# li3' – greut

Répondre

1

Cette erreur est souvent associée à un délai d'attente de connexion à la base de données.

Ceci est plus susceptible de se produire lorsque le serveur Web et le serveur MongoDB sont sur différents hôtes, réseaux ou fournisseurs (comme EC2 dans votre cas) en raison de la latence du réseau ...

Le jeu de délai par défaut au lithium est 100 ms, qui peut être trop lent pour certaines configurations de réseau (mais il devrait être généralement très bien.)

Ceci est documenté ici: Lithium MongoDB Adapter

Lithium MongoDB Adapter timeout setting

Vous pouvez voir la configuration de connexion par défaut MongoDB au lithium ici: (ligne 153 à cette époque) ...

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

D'après les commentaires sur cette page,

'timeout'integer: The number of milliseconds a connection attempt will wait before timing out and throwing an exception.

Defaults to 100