PHP クライアント ライブラリを使用すると、最小限の構成で Google Ads API とのやり取りを簡単に行うことができます。ただし、パフォーマンスはライブラリの使用方法と統合方法に大きく依存します。
ほとんどの一般的なベスト プラクティスは、すべての言語に適用できます。このガイドでは、PHP 固有のパフォーマンスの最適化について説明します。
Protobuf と gRPC の実装
Protobuf は、リクエスト メッセージとレスポンス メッセージに gRPC と Google Ads API で使用されます。2 つの実装(純粋な 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 バージョン(v25)のみを使用するクライアント アプリケーションを実装していて、使用されていない API バージョン(v22、v23、v24)のサポートを削除するとします。
プロジェクトの 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
# v22, v23, and
# v24 of the Google Ads API.
echo "# Removing support..."
composer run-script remove-google-ads-api-version-support -- \
22 \
23 \
24
# 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
次の実行出力例は、ファイルサイズの削減を示しています。V25 は、サポートされている唯一のバージョンです。
# Supported Google Ads API versions:
V22
V23
V24
V25
# Vendor folder size:
135M ./vendor
# Removing support...
> Google\Ads\GoogleAds\Util\ApiVersionSupport::remove
Removing support for the version 22 of Google Ads API...
Done
Removing support for the version 23 of Google Ads API...
Done
Removing support for the version 24 of Google Ads API...
Done
# Supported Google Ads API versions:
V25
# Vendor folder size:
60M ./vendor
開発環境と本番環境
PHP は、命令を実行する前にコンパイルするインタプリタ言語です。これは、ソースファイルが頻繁に変更され、実行時間がそれほど重要でない開発時に有利です。本番環境では、安定性とパフォーマンスが主な懸念事項になります。
キャッシュ
キャッシュ保存は、プリコンパイルされたスクリプト バイトコードを共有メモリに保存することで、パフォーマンスを向上させ、安定性を高めるため、推奨されます。
OPcache は標準ソリューションであり、デフォルトで PHP にバンドルされています。
オートチャージ
自動読み込みは、事前コンパイルされたクラスマップ情報を読み込むことで、パフォーマンスと安定性を向上させます。
PHP クライアント ライブラリは、自動読み込みの PSR-4 に準拠しており、その定義を composer.json ファイルの一部として提供します。--optimize-autoloader や --classmap-authoritative などの専用の Composer CLI オプションは、本番環境ビルドですぐに使用できます。
ロギング
本番環境でロガーのしきい値を ERROR や WARNING などの高い値に設定すると、I/O オーバーヘッドとメモリ使用量を削減できます。
詳しくは、ロギング ガイドをご覧ください。
デバッグとプロファイリング
デバッガとプロファイラ拡張機能(Xdebug など)は、実行オーバーヘッドが大きくなるため、本番環境では無効にします。
プリロード
PHP 7.4 以降では、OPcache プリローディングを使用して、サーバーの起動時にスクリプトをメモリにプリロードできます。これは、標準の OPcache キャッシュ保存よりも一歩進んだ方法です。
プリロード スクリプトは、アプリケーション専用に設計する必要があります。PHP クライアント ライブラリには汎用のプリロード スクリプトが用意されていません。メモリ使用量とパフォーマンスの向上とのトレードオフは、プロジェクトとデプロイ環境ごとに異なるためです。