소개
PHP는 데이터베이스 확장(익스텐션)을 통해 MongoDB 데이터베이스와 상호작용할 수 있습니다. 구버전 PHP에서는 PECL을 통해 mongo 드라이버를 설치해 사용했지만, 현재는 mongodb 드라이버로 대체되었습니다. 두 드라이버 모두 Linux/Windows/macOS 운영체제용으로 사전 컴파일된 바이너리를 이용해 설치할 수 있으며, GitHub에서 배포되는 소스 타르볼(tarball)을 통한 수동 설치도 가능합니다. 어떤 방식을 선택하든 mongo 또는 mongodb 확장을 반드시 php.ini 설정에서 활성화해야 합니다.
PHP MongoDB 확장은 mongodb 컨텍스트를 사용하여 스트림 컨텍스트(Stream Context) 기능을 지원하며, 관련 컨텍스트 옵션은 다음과 같습니다.
주요 컨텍스트 옵션
log_cmd_insert
log_cmd_insert(array $server, array $document, array $writeOptions, array $protocolOptions)
문서(document)를 삽입할 때 log_cmd_insert 컨텍스트 옵션이 호출하는 콜백 함수입니다.
log_cmd_delete
log_cmd_delete(array $server, array $writeOptions, array $deleteOptions, array $protocolOptions)
문서를 삭제할 때 log_cmd_delete 컨텍스트 옵션이 사용하는 콜백 함수입니다.
log_cmd_update
log_cmd_update(array $server, array $writeOptions, array $updateOptions, array $protocolOptions)
문서를 업데이트할 때 log_cmd_update 컨텍스트 옵션이 사용하는 콜백 함수입니다.
log_write_batch
log_write_batch(array $server, array $writeOptions, array $batch, array $protocolOptions)
배치(batch) 작업을 실행할 때 log_write_batch 컨텍스트 옵션이 사용하는 콜백 함수입니다.
log_reply
log_reply(array $server, array $messageHeaders, array $operationHeaders)
MongoDB의 응답(reply)을 읽어올 때 사용되는 콜백 함수입니다.
log_getmore
log_getmore(array $server, array $info)
GET_MORE 작업을 실행할 때 log_getmore 컨텍스트 옵션이 사용하는 콜백 함수입니다.
log_killcursor
log_killcursor(array $server, array $info)
KILLCURSOR 작업을 실행할 때 호출되는 콜백 함수입니다.
$server 배열의 주요 파라미터
위 콜백 함수에 전달되는 $server 배열에는 다음과 같은 서버 기본 정보가 포함됩니다.
- hash — 서버 해시 값. 예: localhost:27017;-;X;56052
- type — 노드 유형(primary/secondary/mongos/arbiter). 예: 2
- max_bson_size — 해당 노드가 네트워크상에서 허용하는 최대 BSON 크기. 예: 16777216
- max_message_size — 해당 노드가 네트워크상에서 허용하는 최대 메시지 크기. 예: 48000000
- request_id — 해당 메시지의 요청 식별자. 예: 42