效能

PHP 用戶端程式庫可讓您輕鬆與 Google Ads API 互動,只需進行最少的設定即可。不過,效能很大程度上取決於程式庫的使用和整合方式。

大部分最佳做法適用於所有語言。本指南將逐一介紹 PHP 專屬的功能。

Protobuf 實作

Protobuf 可用於 gRPC 和 Google Ads API 的請求和回應訊息。有兩種實作項目可供使用,但以 C 編寫的實作項目效能較佳。

詳情請參閱 Protobuf 指南

PHP 轉譯器的作業模式

PHP 是一種多功能的指令碼語言,並提供許多運作模式,視用途而定。PHP CGI (通用閘道介面) 的優點在於,它可以在執行作業之間共用資源。

PHP 版本

建議您定期升級至較新的 PHP 版本,因為這類版本通常具有較佳的整體效能。支援的 PHP 版本清單

未使用的 Google Ads API 版本

所有用戶端程式庫版本都支援多個 Google Ads API 版本。針對用戶端程式庫支援的每個 Google Ads API 版本,該版本都有專屬套件。

您可以安全地從用戶端程式庫中移除專屬於未使用的 Google Ads API 版本的套件。因為這有助於加快執行速度或減少記憶體用量,因此用戶端程式庫提供公用程式,以程式方式執行。

範例

假設您正在實作只使用最新 API 版本 (v18) 的用戶端程式庫,且想要移除對未使用的 API 版本 (v17v16) 的支援。

在專案的 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 Google Ads API versions.
echo "# Supported Google Ads API versions:"
find ./vendor/googleads/google-ads-php/src/Google/Ads/GoogleAds/V* -maxdepth 0 | grep -o '..$'
echo "# Vendor folder size:"
du -sh ./vendor

# Use the Composer script to remove the unused versions v16 and v17 of the Google Ads API.
echo "# Removing support..."
composer run-script remove-google-ads-api-version-support -- 16 17

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

下方的執行輸出內容範例指出檔案大小縮減了 50 MB,且僅剩下 V18 這個支援的版本:

# Supported Google Ads API versions:
V16
V17
V18
# Vendor folder size:
110M    ./vendor
# Removing support...
> Google\Ads\GoogleAds\Util\ApiVersionSupport::remove
Removing support for the version 16 of Google Ads API...
Done
Removing support for the version 17 of Google Ads API...
Done
# Supported Google Ads API versions:
V18
# Vendor folder size:
60M     ./vendor

開發環境與實際運作環境

PHP 是一種解譯語言,會先編譯指令,再執行指令。這通常是有利的做法,因為在開發期間,來源經常會變更,而執行時間並非那麼重要。然而,由於穩定性和效能成為了主要考量,因此在實際工作環境時的情況則相反。

快取

強烈建議您使用快取功能,因為這麼做可儲存預先編譯的指令碼指示,藉此提高效能並增加穩定性。

OPcache 是最常用的解決方案,並預設可供使用。

自動儲值

Autoload 很常見,因為它會載入類別的預編譯資訊,進而提升效能和穩定性。

PHP 用戶端程式庫符合 PSR-4 的自動載入需求,並在 composer.json 檔案中提供定義。接著,您就可以使用 Composer 的專屬選項,例如 --optimize-autoloader--classmap-authoritative

記錄

將記錄器設為 ERROR 等高層級,有助於減少執行時間的額外負擔和記憶體消耗量。

詳情請參閱記錄指南

偵錯與分析

建議您停用偵錯工具和分析工具,因為這類工具通常會造成一些執行時間的額外負擔。

預先載入

自 PHP 7.4 起,OPcache 預先載入可用於在記憶體中預先載入指令碼,比一般快取更深入一步。

因此,您必須設計可充分利用這項功能的腳本,但 PHP 用戶端程式庫無法做到這點,因為沒有任何通用方法可實作 OPcache 預先載入功能,而且記憶體用量和效能提升之間的取捨,取決於特定專案和執行作業。