Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Docs Menu
Docs Home
/ / /
PHP 라이브러리 매뉴얼
/

MongoDB 클라이언트 만들기

MongoDB deployment 에 연결하려면 다음 항목을 생성해야 합니다.

  • 연결 string 이라고도 하는연결 URI 는 PHP 연결할 배포서버 를 라이브러리에 MongoDB 알려줍니다.

  • MongoDB\Client 객체- MongoDB deployment 서버에 대한 연결을 생성하고 해당 배포서버에서 작업을 수행할 수 있도록 합니다.

또한 이러한 구성 요소 중 하나 또는 둘 모두에서 옵션을 설정하다 하여 MongoDB 에 연결된 동안 PHP 라이브러리가 작동하는 방식을 사용자 지정할 수 있습니다.

이 가이드 에서는 연결 string 의 구성 요소를 설명하고 MongoDB\Client 객체 를 사용하여 MongoDB 배포서버 에 연결하는 방법을 보여줍니다.

표준 연결 string 에는 다음 구성 요소가 포함됩니다.

구성 요소
설명

mongodb://

필수 사항입니다. 표준 연결 형식의 문자열로 식별하는 접두사입니다.

db_username:db_password

선택 사항. 인증 자격 증명. 이를 포함하면 클라이언트 는 authSource 에 지정된 데이터베이스 에 대해 사용자를 인증합니다. authSource 연결 옵션에 대한 자세한 내용은 인증 메커니즘을 참조하세요.

host[:port]

필수입니다. MongoDB가 실행 중인 호스트 및 선택적 포트 번호입니다. 포트 번호를 포함하지 않으면 드라이버는 기본 포트인 27017 을 사용합니다.

/defaultauthdb

선택 사항. 연결 string 에 db_username:db_password@ 인증 자격 증명이 포함되어 있지만 authSource 옵션이 없는 경우에 사용할 인증 데이터베이스입니다. 이 구성 요소를 포함하지 않으면 클라이언트는 admin 데이터베이스에 대해 사용자를 인증합니다.

?<options>

선택 사항. 연결별 옵션을 <name>=<value> 쌍으로 지정하는 쿼리 string 입니다. 이러한 옵션에 대한 전체 설명은 연결 옵션 지정 을 참조하세요.

연결 문자열에 학습 보려면 서버 매뉴얼에서 연결 문자열 을 참조하세요.

MongoDB 에 대한 연결을 만들려면 MongoDB\Client 객체 생성합니다. 다음 매개변수를 MongoDB\Client 생성자에 전달합니다.

  • $uri: 연결 URI를 설정합니다.

  • $uriOptions: (선택 사항) 인증 자격 증명 및 서버 선택 설정을 포함하여 클라이언트 MongoDB 에 연결하는 방법을 구성하는 URI 옵션을 설정합니다. 이 매개 변수와 연결 문자열 에 동일한 옵션을 설정하다 $uriOptions 값이 우선합니다. 지원되는 옵션의 전체 목록을 보려면 연결 옵션 지정 가이드를 참조하세요.

  • $driverOptions: (선택 사항) TLS 연결을 위한 데이터 암호화 설정 및 인증서 유효성 검사 옵션을 포함하여 기본 PHP 확장의 동작을 구성하는 옵션을 설정합니다. 지원되는 옵션의 전체 목록을 보려면 API 설명서에서 MongoDB\Client::__construct() 를 참조하세요.

이 예시 클라이언트 구성하고 다음 매개변수를 전달합니다.

  • localhost의 포트 27017 에서 MongoDB deployment 에 연결하는 연결 URI

  • URI 옵션 매개변수는 PHP 라이브러리가 오류를 생성하기 전에 서버 선택을 위해 10000 밀리초 동안 기다리도록 지시합니다.

<?php
$uri = 'mongodb://localhost:27017';
$uriOptions = ['serverSelectionTimeoutMS' => 10000];
$client = new MongoDB\Client($uri, $uriOptions);

libmongoc 라이브러리와 PHP 확장은 MongoDB deployment 에 대한 연결을 처리하다 . 인스턴스 구성할 MongoDB\Client 때 PHP 라이브러리는 동일한 연결 문자열 과 옵션을 사용하여 MongoDB\ 드라이버\ 관리자 인스턴스 생성합니다. 또한 확장 프로그램은 이러한 생성자 인수를 사용하여 영구 클라이언트에 대한 해시 키를 libmongoc libmongoc 파생합니다. 이전에 키를 사용하여 클라이언트 유지한 경우 해당 키가 재사용됩니다. 그렇지 않으면 새 libmongoc 클라이언트 생성되어 PHP 작업자 프로세스 의 수명 동안 유지됩니다. 이 프로세스 에 대해 자세히 학습 PHP 확장 문서를 참조하세요.

libmongoc 클라이언트 MongoDB deployment 에 대한 자체 연결과 해당 토폴로지 뷰를 유지 관리합니다. 영구 libmongoc 클라이언트 재사용하면 PHP 라이브러리를 통해 새 연결을 설정하고 토폴로지 재발견하는 오버헤드 피할 수 있습니다. 이 접근 방식은 일반적으로 성능을 향상시키며 드라이버의 기본값 동작입니다.

영구 libmongoc 클라이언트는 PHP 작업자 프로세스 종료될 때까지 해제되지 않습니다. 따라서 MongoDB\Driver\Manager 객체 범위를 벗어난 후에도 MongoDB deployment 에 대한 연결이 열린 상태로 유지될 수 있습니다. 이는 일반적으로 하나의 MongoDB deployment 에 연결하는 애플리케이션에는 문제가 되지 않지만, 다음과 같은 상황에서 오류가 발생할 수 있습니다.

  • PHP -FPM은 pm.max_requests=0 로 구성되어 작업자가 다시 생성되지 않으며, MongoDB 연결 문자열 또는 옵션을 약간 변경하여 PHP 애플리케이션 여러 번 배포됩니다. 이로 인해 각 작업자 프로세스 에 libmongoc 클라이언트 객체가 누적될 수 있습니다.

  • 요청 지연 시간 가장 중요하지 않은 백엔드 구성 요소에서 애플리케이션 별도의 MongoDB deployment 에 연결되는 경우가 있습니다.

첫 번째 경우, 애플리케이션 배포서버 의 일부로 PHP -FPM을 다시 시작하면 애플리케이션 사용하지 않는 libmongoc 클라이언트를 출시하다 하면서도 최신 연결 문자열 에 대해 영구 클라이언트 계속 사용할 수 있습니다.

두 번째 경우에는 다른 솔루션이 필요합니다. disableClientPersistence 운전자 옵션에 true 를 지정하면 PHP 라이브러리에 새 libmongoc 클라이언트 생성하고 해당 MongoDB\Driver\Manager 가 범위를 벗어날 때 해제되도록 합니다.

다음 코드는 클라이언트 만들 때 disableClientPersistence 옵션을 true 로 설정하다 방법을 보여 줍니다.

<?php
$client = new MongoDB\Client(
uri: getenv('MONGODB_URI') ?: 'mongodb://127.0.0.1/',
driverOptions: ['disableClientPersistence' => true],
);

참고

클라이언트 지속성을 비활성화하면 PHP 라이브러리가 MongoDB deployment 에 대한 연결을 설정하고 해당 토폴로지 검색하는 데 더 많은 시간이 필요합니다.

PHP 라이브러리에서 MongoDB\Client 객체 를 만드는 방법에 학습 보려면 다음 API 설명서를 참조하세요.

돌아가기

연결

이 페이지의 내용