개요
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);
클라이언트 지속성
The libmongoc
library and the PHP extension handle connections to a MongoDB deployment. When you construct a MongoDB\Client
instance, the PHP library creates a MongoDB\Driver\Manager instance by using the same connection string and options. The extension also uses those constructor arguments to derive a hash key for persistent libmongoc
clients. If you previously persisted a libmongoc
client by using a key, it is reused. Otherwise, a new libmongoc
client is created and persisted for the lifetime of the PHP worker process. To learn more about this process, see the PHP extension documentation.
각 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 설명서를 참조하세요.