效能

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 檔案中,定義 Composer 指令碼 (名為 remove-google-ads-api-version-support),在 ApiVersionSupport 類別中利用用戶端程式庫提供的工具:

"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 預先載入的通用方法,而且記憶體用量和效能提升之間的取捨,取決於特定專案和執行作業。