Ich habe eine Abfrage, die Daten in einer riesigen Sammlung (über 48M) nachschlägt, doch selbst wenn ich timeout=-1
hinzufüge, wirft sie immer noch MongoCursorTimeoutException
ausnahme ..
Ich verwende diese Bibliothek: https://github.com/jenssegers/laravel-mongodb
Irgendwelche Ideen?
Es gibt ein Problem PHP-1249 - MongoCursor :: count () sollte das Socket-Timeout des Cursors verwenden , für das gesendet wurde PHP MongoDB Treiber v1.5.7, der im Oktober 2014 in Version 1.5.8 behoben wurde.
Die antworten vom Support:
Wenn wir uns den Code ein wenig anschauen, scheint es, dass sowohl Socket-Timeout als auch
maxTimeMS
nicht an den Befehlcount
weitergegeben wird.Wenn Sie einen sofortigen Workaround benötigen, sollten Sie mit
MongoDB::command()
vorerst auskommen (was beide Timeouts unterstützen kann).
Die von einem der Benutzer gepostete Problemumgehung lautet:
%Vor% Es scheint, dass laravel-mongodb MongoDB::command()
nicht verwendet. Sie müssen entweder Ihre Abfrage explizit ohne Hilfe von where
methoden wie oben gezeigt schreiben oder auf v.1.5.8 upgraden.