Leistung

Die PHP-Clientbibliothek erleichtert die Interaktionen mit der Google Ads API bei minimaler Konfiguration. Die Leistung hängt jedoch stark davon ab, wie die Bibliothek verwendet und eingebunden wird.

Die meisten dieser Best Practices gelten für alle Sprachen. In diesem Leitfaden werden die für PHP spezifischen Funktionen behandelt.

Protobuf-Implementierung

Protobuf wird von gRPC und der Google Ads API für Anfrage- und Antwortnachrichten verwendet. Es sind zwei Implementierungen verfügbar, wobei die in C geschriebene eine bessere Leistung bietet.

Weitere Informationen finden Sie im Protobuf-Leitfaden.

Betriebsmodus des PHP-Interpreters

PHP ist eine vielseitige Scriptsprache und bietet je nach Verwendung viele Betriebsmodi. PHP CGI (Common Gateway Interface) hat einen bemerkenswerten Vorteil, da es Ressourcen zwischen Ausführungen freigeben kann.

PHP-Version

Es empfiehlt sich, regelmäßig auf eine neuere PHP-Version umzustellen, da diese in der Regel eine bessere Gesamtleistung bietet. Liste der unterstützten PHP-Versionen

Nicht verwendete Google Ads API-Versionen

Alle Versionen der Clientbibliothek unterstützen mehrere Google Ads API-Versionen. Für jede von der Clientbibliothek unterstützte Version der Google Ads API gibt es spezielle Pakete.

Pakete für nicht verwendete Versionen der Google Ads API können aus der Clientbibliothek entfernt werden. Da es nützlich sein kann, die Ausführung zu beschleunigen oder den Arbeitsspeicherbedarf zu reduzieren, bietet die Clientbibliothek Dienstprogramme, mit denen dies programmgesteuert möglich ist.

Beispiel

Angenommen, Sie implementieren die Clientbibliothek, die nur die neueste API-Version v18 verwendet, und möchten die Unterstützung für die nicht verwendeten API-Versionen v17 und v16 entfernen.

Definieren Sie in der Datei composer.json des Projekts ein Composer-Skript mit dem Namen remove-google-ads-api-version-support, das das von der Clientbibliothek in der Klasse ApiVersionSupport bereitgestellte Dienstprogramm verwendet:

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

Verwenden Sie dann das Composer-Skript mit den Versionsnummern als Parameter und geben Sie einige Statusmeldungen aus:

# 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

Die folgende Ausgabe der Beispielausführung deutet auf eine Reduzierung der Dateigröße um 50 MB hin. Die einzige verbleibende Version ist 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

Entwicklung vs. Produktion

PHP ist eine interpretierte Sprache, bei der Anleitungen vor der Ausführung zuerst kompiliert werden. Dies ist in der Regel von Vorteil, da sich Quellen während der Entwicklung häufig ändern, während die Ausführungszeit nicht so wichtig ist. Während der Produktion ist das Gegenteil der Fall, da Stabilität und Leistung im Vordergrund stehen.

Cache

Das Caching ist üblich und wird dringend empfohlen, da es durch das Speichern vorkompilierter Scriptanweisungen sowohl die Leistung als auch die Stabilität verbessert.

OPcache ist die am häufigsten verwendete Lösung und ist standardmäßig verfügbar.

Automatisches Aufladen

Autoload ist weit verbreitet, da es sowohl die Leistung als auch die Stabilität verbessert, indem vorkompilierte Informationen zu Klassen geladen werden.

Die PHP-Clientbibliothek entspricht PSR-4 für das automatische Laden und stellt die Definition als Teil der Datei composer.json bereit. Spezielle Optionen von Composer wie --optimize-autoloader oder --classmap-authoritative können dann direkt verwendet werden.

Logging

Das Festlegen von Protokollierungen auf eine hohe Ebene wie ERROR kann dazu beitragen, den Aufwand für die Ausführungszeit und den Arbeitsspeicherverbrauch zu reduzieren.

Weitere Informationen finden Sie im Leitfaden zum Logging.

Debugging und Profiling

Wir empfehlen, Debugger- und Profiler-Tools zu deaktivieren, da sie in der Regel einen gewissen Overhead bei der Ausführungszeit verursachen.

Vorab laden

Seit PHP 7.4 können Scripts mit dem OPcache-Preload vorab in den Arbeitsspeicher geladen werden. Das ist ein Schritt weiter als das normale Caching.

Ein Script muss so konzipiert sein, dass diese Funktion genutzt werden kann. Das ist bei der PHP-Clientbibliothek nicht der Fall, da es keine generische Möglichkeit zur Implementierung des OPcache-Preloads gibt. Außerdem ist der Kompromiss zwischen Speichernutzung und Leistungssteigerung sehr spezifisch für ein bestimmtes Projekt und eine bestimmte Ausführung.