效能

PHP 用戶端程式庫只需進行少量設定,就能簡化與 Google Ads API 的互動。不過,效能主要取決於程式庫的使用方式及整合方式。

大多數的最佳做法都適用於所有語言。本指南將逐一介紹 PHP 專屬的說明。

Protobuf 實作

gRPC 和 Google Ads API 會使用 Protobuf 來處理要求和回應訊息。有兩種實作方式可供選擇,不過以 C 編寫的實作效果較佳。

詳情請參閱 Protobuf 指南

PHP 解譯器的作業模式

PHP 是多功能的指令碼語言,依據用途而定,有多種作業模式。PHP CGI (共用閘道介面) 具有明顯的優勢,因為可在執行作業之間共用資源。

PHP 版本

定期升級至較新版的 PHP 是不錯的做法,因為版本的整體效能通常較佳。支援的 PHP 版本清單

未使用的 Google Ads API 版本

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

針對未使用的 Google Ads API 版本專用套件,您可以從用戶端程式庫中安全移除。由於有助於加快執行速度或減少記憶體用量,用戶端程式庫提供的公用程式可提供程式化作業。

範例

假設您要實作的用戶端程式庫僅使用最新 API 版本:v16,且想要移除對未使用 API 版本的支援:v15v14

在專案的 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 v14 and v15 of the Google Ads API.
echo "# Removing support..."
composer run-script remove-google-ads-api-version-support -- 14 15

# 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

以下的執行輸出檔案顯示檔案大小減少了 5,000 萬,而唯一支援的版本為 V16

# Supported Google Ads API versions:
V14
V15
V16
# Vendor folder size:
110M    ./vendor
# Removing support...
> Google\Ads\GoogleAds\Util\ApiVersionSupport::remove
Removing support for the version 14 of Google Ads API...
Done
Removing support for the version 15 of Google Ads API...
Done
# Supported Google Ads API versions:
V16
# Vendor folder size:
60M     ./vendor

開發與實際工作環境

PHP 是解譯語言,它會先編譯指令再執行指令。這通常很有幫助,因為在開發期間,來源往往會變動,而執行時間不是那麼重要。然而,實際運作時間相反,因為穩定性和效能成為主要考量。

快取

快取是常見情況,強烈建議的做法,因為快取會儲存預先編譯的指令碼指示,藉此提高效能和穩定性。

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

自動儲值

自動載入是很常見的情形,因為這既能載入類別的預先編譯資訊,也能改善效能並提升穩定性。

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

記錄

將記錄器設為較高層級 (例如 ERROR),有助於減少執行時間負擔和記憶體用量。

詳情請參閱 Logging 指南

偵錯和剖析

建議您停用偵錯工具和分析器工具,因為這些工具通常會導致執行時間增加一些作業。

預先載入

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

指令碼必須設計可善用這項功能,但 PHP 用戶端程式庫則沒有,因為 OPcache 預先載入實作方法並沒有通用,而且記憶體用量與效能提升的權衡,將針對特定專案和執行作業。