Performance

PHP 클라이언트 라이브러리를 사용하면 최소한의 구성으로 Google Ads API와 쉽게 상호작용할 수 있습니다. 하지만 성능은 라이브러리가 사용되고 통합되는 방식에 따라 크게 달라집니다.

대부분의 일반 권장사항은 모든 언어에 적용됩니다. 이 가이드에서는 PHP와 관련된 성능 최적화를 다룹니다.

Protobuf 및 gRPC 구현

Protobuf는 gRPC 및 Google Ads API에서 요청 및 응답 메시지에 사용됩니다. 두 가지 구현 (순수 PHP 및 C 확장 프로그램)을 사용할 수 있으며 protobuf 및 grpc의 C 확장 프로그램은 직렬화 및 네트워크 성능을 크게 향상시킵니다.

자세한 내용은 Protobuf 가이드 및 전송 가이드를 참고하세요.

PHP 인터프리터의 작업 모드

PHP는 다목적 스크립트 언어이며 사용량에 따라 여러 작업 모드가 있습니다. PHP-FPM (FastCGI Process Manager) 또는 영구 애플리케이션 서버는 영구 작업자 프로세스가 요청 간에 캐시된 바이트코드 (OPcache를 통해)와 리소스를 재사용할 수 있으므로 표준 CGI에 비해 상당한 이점이 있습니다.

PHP 버전

런타임 성능 개선의 이점을 누리려면 정기적으로 최신 PHP 버전으로 업그레이드하세요. 지원되는 PHP 버전 목록을 확인하세요.

사용되지 않는 Google Ads API 버전

클라이언트 라이브러리의 모든 버전은 여러 Google Ads API 버전을 지원합니다. 클라이언트 라이브러리에서 지원하는 각 Google Ads API 버전에는 해당 버전에 대한 전용 패키지가 있습니다.

애플리케이션에서 사용하지 않는 Google Ads API 버전에 전용된 패키지는 클라이언트 라이브러리에서 안전하게 삭제할 수 있습니다. 메모리 사용량을 줄이고 실행 속도를 높이기 위해 클라이언트 라이브러리는 사용되지 않는 API 버전을 프로그래매틱 방식으로 삭제하는 유틸리티를 제공합니다.

예

최신 API 버전 (v26)만 사용하는 클라이언트 애플리케이션을 구현하고 사용되지 않는 API 버전 (v23, v24, v25)에 대한 지원을 삭제하려고 한다고 가정해 보겠습니다.

프로젝트의 composer.json 파일에서 ApiVersionSupport의 클라이언트 라이브러리에서 제공하는 유틸리티를 활용하는 Composer 스크립트(remove-google-ads-api-version-support)를 정의합니다.

"scripts": {
  "remove-google-ads-api-version-support": [
    "Google\\Ads\\GoogleAds\\Util\\ApiVersionSupport::remove"
  ]
}

그런 다음 버전 번호를 매개변수로 사용하여 Composer 스크립트를 실행하고 상태 메시지를 출력합니다.

# Change the current directory to the project directory.
cd /path/to/the/project

# Install the project.
composer install

# Output the vendor folder size and the list of Google Ads API versions that are
# supported before removing support for unused Google Ads API versions.
echo "# Supported Google Ads API versions:"
find ./vendor/googleads/google-ads-php/src/Google/Ads/GoogleAds/V* \
  -maxdepth 0 | grep -oE 'V[0-9]+$'
echo "# Vendor folder size:"
du -sh ./vendor

# Use the Composer script to remove the unused versions
# v23, v24, and
# v25 of the Google Ads API.
echo "# Removing support..."
composer run-script remove-google-ads-api-version-support -- \
  23 \
  24 \
  25

# Output the vendor folder size and the list of Google Ads API versions that are
# supported after removing support for unused Google Ads API versions.
echo "# Supported Google Ads API versions:"
find ./vendor/googleads/google-ads-php/src/Google/Ads/GoogleAds/V* \
  -maxdepth 0 | grep -oE 'V[0-9]+$'
echo "# Vendor folder size:"
du -sh ./vendor

다음 샘플 실행 출력은 파일 크기 감소를 보여주며, V26이 유일하게 지원되는 버전으로 남아 있습니다.

# Supported Google Ads API versions:
V23
V24
V25
V26
# Vendor folder size:
135M    ./vendor
# Removing support...
> Google\Ads\GoogleAds\Util\ApiVersionSupport::remove
Removing support for the version 23 of Google Ads API...
Done
Removing support for the version 24 of Google Ads API...
Done
Removing support for the version 25 of Google Ads API...
Done
# Supported Google Ads API versions:
V26
# Vendor folder size:
60M     ./vendor

개발과 프로덕션 비교

PHP는 명령어를 실행하기 전에 컴파일하는 인터프리트 언어입니다. 이는 소스 파일이 자주 변경되고 실행 시간이 덜 중요한 개발 중에 유용합니다. 프로덕션 환경에서는 안정성과 성능이 주요 관심사가 됩니다.

캐시

캐싱은 사전 컴파일된 스크립트 바이트 코드를 공유 메모리에 저장하여 성능을 개선하고 안정성을 높이므로 권장됩니다.

OPcache는 표준 솔루션이며 기본적으로 PHP와 함께 번들로 제공됩니다.

자동 충전

자동 로드는 사전 컴파일된 클래스 맵 정보를 로드하여 성능과 안정성을 개선합니다.

PHP 클라이언트 라이브러리는 자동 로드를 위해 PSR-4를 준수하며 composer.json 파일의 일부로 정의를 제공합니다. --optimize-autoloader 또는 --classmap-authoritative와 같은 전용 Composer CLI 옵션은 프로덕션 빌드에서 즉시 사용할 수 있습니다.

로깅

프로덕션에서 로거를 ERROR 또는 WARNING과 같은 더 높은 기준점으로 설정하면 I/O 오버헤드와 메모리 소비를 줄이는 데 도움이 됩니다.

자세한 내용은 Logging 가이드를 참고하세요.

디버깅 및 프로파일링

프로덕션에서 디버거 및 프로파일러 확장 프로그램 (예: Xdebug)은 상당한 실행 오버헤드를 유발하므로 사용 중지합니다.

프리로드

PHP 7.4부터 OPcache 미리 로드를 사용하여 서버 시작 시 스크립트를 메모리에 미리 로드할 수 있으며, 이는 표준 OPcache 캐싱보다 한 단계 더 나아간 것입니다.

미리 로드 스크립트는 애플리케이션에 맞게 설계되어야 합니다. PHP 클라이언트 라이브러리는 메모리 사용량과 성능 향상 간의 절충점이 각 프로젝트 및 배포 환경에 따라 다르기 때문에 일반적인 미리 로드 스크립트를 제공하지 않습니다.