Не может соединиться с MongoDB через PHP

Я просто хотел смотреть на DB монго. Но я просто не получаю его выполнение. Я установил его с PECL и моим phpinfo() говорит мне, что расширение загружается, но когда я пытаюсь получить соединение с

$mongo = new Mongo();

Я получаю это:

Фатальная ошибка: Неперехваченное исключение 'MongoConnectionException' с сообщением ': Транспортная конечная точка не соединена'

У кого-либо есть та же проблема?... Или какая-либо Идея об этом?

13
задан Community 22 September 2017 в 18:01
поделиться

1 ответ

При наличии практически неограниченного объема памяти (что неизбежно будет происходить в крошечных тестах, хотя часто и не в реальных проблемах! -)Списки будут иметь тенденцию превосходить генераторы, потому что они могут быть распределены только один раз, в одной «большой связке» (без фрагментации памяти и т.д.), в то время как генераторы требуют (внутренних) дополнительных усилий, чтобы избежать этого подхода «большой связки», сохраняя состояние стека-кадра, чтобы позволить возобновление выполнения.

Будет ли список-подход или генератор-подход быстрее в реальной программе зависит от точной ситуации с памятью, включая фрагментацию, которую примерно невозможно точно воспроизвести в «микро-бенчмарке». IOW, в конце концов, если вы действительно заботитесь о производительности, вы должны тщательно оценить (и, отдельно, профилировать) ваши фактические программы (ы), а не только «игрушечные» микрореперы, в общем случае.

-121--3842621-

Попробуйте этот код - он работает довольно надежно для меня:

public static final String USER_AGENT = "Mozilla/5.0 (Linux; U; Android 1.1; en-us;dream) AppleWebKit/525.10+ (KHTML, like Gecko) Version/3.0.4 Mobile Safari/523.12.2";
private DefaultHttpClient getThreadSafeHttpClient() {
    final HttpParams params = new BasicHttpParams();
    params.setParameter("http.useragent", USER_AGENT);
    HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
    HttpProtocolParams.setContentCharset(params, "UTF-8");
    final SchemeRegistry registry = new SchemeRegistry();
    registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
    final SSLSocketFactory sslSocketFactory = SSLSocketFactory.getSocketFactory();
    sslSocketFactory.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
    registry.register(new Scheme("https", sslSocketFactory, 443));
    final ThreadSafeClientConnManager manager = new ThreadSafeClientConnManager(params, registry);
    final DefaultHttpClient httpclient = new DefaultHttpClient(manager, params);
    // how to handle retries
    final HttpRequestRetryHandler myRetryHandler = new HttpRequestRetryHandler() {
        public boolean retryRequest(final IOException exception, final int executionCount, final HttpContext context) {
            if (executionCount >= 5) {
                // Do not retry if over max retry count
                return false;
            }
            if (exception instanceof NoHttpResponseException) {
                // Retry if the server dropped connection on us
                return true;
            }
            if (exception instanceof SSLHandshakeException) {
                // Do not retry on SSL handshake exception
                return false;
            }
            final HttpRequest request = (HttpRequest) context.getAttribute(ExecutionContext.HTTP_REQUEST);
            final boolean idempotent = !(request instanceof HttpEntityEnclosingRequest);
            if (idempotent) {
                // Retry if the request is considered idempotent
                return true;
            }
            return false;
        }

    };
    httpclient.setHttpRequestRetryHandler(myRetryHandler);
    return httpclient;
}
-121--4268497-

Пожалуйста, не поймите неправильно, но действительно ли сервер запущен? Только похоже, что ваша ошибка связана с ошибкой подключения, и вы не упомянули сервер или место его нахождения (например, localhost на порту по умолчанию)

17
ответ дан 1 December 2019 в 20:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: