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);

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 로 설정하다 방법을 보여 줍니다.

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

참고

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

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

돌아가기

연결

이 페이지의 내용