개요
MongoDB deployment 에 연결하려면 다음 항목을 생성해야 합니다.
연결 string 이라고도 하는연결 URI 는 PHP 연결할 배포서버 를 라이브러리에 MongoDB 알려줍니다.
MongoDB\Client 객체- MongoDB deployment 서버에 대한 연결을 생성하고 해당 배포서버에서 작업을 수행할 수 있도록 합니다.
또한 이러한 구성 요소 중 하나 또는 둘 모두에서 옵션을 설정하다 하여 MongoDB 에 연결된 동안 PHP 라이브러리가 작동하는 방식을 사용자 지정할 수 있습니다.
이 가이드 에서는 연결 string 의 구성 요소를 설명하고 MongoDB\Client
객체 를 사용하여 MongoDB 배포서버 에 연결하는 방법을 보여줍니다.
연결 URI
표준 연결 string 에는 다음 구성 요소가 포함됩니다.
구성 요소 | 설명 |
---|---|
| 필수 사항입니다. 표준 연결 형식의 문자열로 식별하는 접두사입니다. |
| 선택 사항. 인증 자격 증명. 이를 포함하면 클라이언트 는 |
| 필수입니다. MongoDB가 실행 중인 호스트 및 선택적 포트 번호입니다. 포트 번호를 포함하지 않으면 드라이버는 기본 포트인 |
| 선택 사항. 연결 string 에 |
| 선택 사항. 연결별 옵션을 |
연결 문자열에 학습 보려면 서버 매뉴얼에서 연결 문자열 을 참조하세요.
MongoDB\Client 생성
MongoDB 에 대한 연결을 만들려면 MongoDB\Client
객체 생성합니다. 다음 매개변수를 MongoDB\Client
생성자에 전달합니다.
$uri
: 연결 URI를 설정합니다.$uriOptions
: (선택 사항) 인증 자격 증명 및 서버 선택 설정을 포함하여 클라이언트 MongoDB 에 연결하는 방법을 구성하는 URI 옵션을 설정합니다. 이 매개 변수와 연결 문자열 에 동일한 옵션을 설정하다$uriOptions
값이 우선합니다. 지원되는 옵션의 전체 목록을 보려면 연결 옵션 지정 가이드를 참조하세요.$driverOptions
: (선택 사항) TLS 연결을 위한 데이터 암호화 설정 및 인증서 유효성 검사 옵션을 포함하여 기본 PHP 확장의 동작을 구성하는 옵션을 설정합니다. 지원되는 옵션의 전체 목록을 보려면 API 설명서에서MongoDB\Client::__construct()
를 참조하세요.
예시
이 예시 클라이언트 구성하고 다음 매개변수를 전달합니다.
localhost
의 포트27017
에서 MongoDB deployment 에 연결하는 연결 URIURI 옵션 매개변수는 PHP 라이브러리가 오류를 생성하기 전에 서버 선택을 위해
10000
밀리초 동안 기다리도록 지시합니다.
$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
로 설정하다 방법을 보여 줍니다.
$client = new MongoDB\Client( uri: getenv('MONGODB_URI') ?: 'mongodb://127.0.0.1/', driverOptions: ['disableClientPersistence' => true], );
참고
클라이언트 지속성을 비활성화하면 PHP 라이브러리가 MongoDB deployment 에 대한 연결을 설정하고 해당 토폴로지 검색하는 데 더 많은 시간이 필요합니다.
API 문서
PHP 라이브러리에서 MongoDB\Client
객체 를 만드는 방법에 학습 보려면 다음 API 설명서를 참조하세요.