워드프레스로 상업용 웹사이트를 만들 때는 웹 애플리케이션 서버를 데이터베이스 서버와 분리하고 데이터베이스 쪽을 복제하는 것이 일반적입니다. 이는 데이터베이스 접근 부하를 분산시켜 서비스 성능을 향상시키기 위한 것이며, 실패 시 미러링 보조 노드의 메인 데이터베이스를 복구할 수 있는데, 이는 서비스의 최악의 경우인 '데이터 손실'입니다.
워드프레스에는 "HyperDB"라는 드롭인이 있는데, 이는 기본 노드와 보조 노드의 미러 데이터베이스 구성을 지원할 수 있습니다. 이를 사용하면 데이터베이스 업데이트가 마스터 데이터베이스에만 집계될 수 있고, 데이터베이스 참조는 마스터와 보조 데이터베이스 간에 분산될 수 있습니다.
(* "HyperDB" 드롭인을 이용한 데이터베이스 중복 방법은 QuickKnowLedge에서 자세히 설명되어 있습니다: MySQL HyperDB + Keepalived를 이용한 WordPress 부하 분산 등.) )
만약 HyperDB를 사용하는 워드프레스 사이트가 워드프레스의 핵심 처리에 의존하지 않는 방식으로 자체 데이터베이스 접근 처리를 확장한다면, 문제가 발생할 수 있습니다.
워드프레스 데이터베이스 제어 시스템에서 워드프레스 페이지 외부에서 전역 변수 "$wpdb"을 사용할 경우는 어떤 경우인가요?
예를 들어, Ajax 등에서 WordPress 게시물에서 직접 생성된 PHP를 호출하고, 그 PHP 내에서 WordPress 데이터베이스에 접근한다면, 이러한 WordPress 프로그램 그룹과 독립적인 외부 프로그램에서 데이터베이스 접근에 전역 변수 "$wpdb"을 사용할 때,
[코드 lang="php" light="true"]require_once('./wp-config.php');[/code] ... 위에서 설명한 설정 파일을 포함하면, "HyperDB"를 활성화하면 작동하지 않습니다.
이 경우, 구성 파일에서 블로그 헤더로 포함된 파일을 변경하여 정규화할 것입니다.
[코드 lang="php" light="true"]require_once('./wp-blog-header.php');[/code]
특히 include 파일을 변경한 후에도 성능 변화가 없었으므로, 외부 프로그램에서 "$wpdb"을 사용할 때 "wp-blog-header.php"을 포함하는 것이 안전해 보입니다.