Rendimento

La libreria client PHP facilita le interazioni con l'API Google Ads con una configurazione minima da parte tua. Tuttavia, le prestazioni dipendono molto da come viene utilizzata e integrata la libreria.

La maggior parte di queste best practice si applica a tutte le lingue. La presente guida illustra quelli specifici per PHP.

Implementazione di Protobuf

Protobuf è utilizzato da gRPC e dall'API Google Ads per i messaggi di richiesta e risposta. Sono disponibili due implementazioni, anche se quella scritta in C ha le prestazioni migliori.

Per ulteriori informazioni, consulta la guida di Protobuf.

Modalità operativa dell'interprete PHP

PHP è un linguaggio di script versatile e ha molte modalità operative a seconda dell'utilizzo. PHP CGI (Common Gateway Interface) ha un vantaggio notevole in quanto può condividere le risorse tra le esecuzioni.

Versione PHP

È buona norma eseguire regolarmente l'upgrade a una versione PHP più recente, poiché in genere offre prestazioni generali migliori. Elenco di versioni PHP supportate.

Versioni dell'API Google Ads inutilizzate

Tutte le versioni della libreria client supportano più versioni dell'API Google Ads. Per ogni versione dell'API Google Ads supportata dalla libreria client, sono disponibili pacchetti dedicati per la versione.

I pacchetti dedicati alle versioni dell'API Google Ads non utilizzate possono essere rimossi in sicurezza dalla libreria client. Poiché può essere utile per accelerare l'esecuzione o ridurre l'utilizzo della memoria, la libreria client fornisce utilità per farlo in modo programmatico.

Esempio

Supponiamo che tu stia implementando la libreria client che utilizza solo la versione più recente dell'API, v16, e che tu voglia rimuovere il supporto per le versioni API inutilizzate v15 e v14.

Nel file composer.json del progetto, definisci uno script Composer (denominato remove-google-ads-api-version-support) che utilizzi l'utilità fornita dalla libreria client, nella classe ApiVersionSupport:

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

Quindi, utilizza lo script Composer con i numeri di versione come parametri e stampa alcuni messaggi di stato:

# 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

L'output di esecuzione di esempio riportato di seguito indica una riduzione delle dimensioni del file di 50 MB e l'unica versione supportata rimanente è 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

Sviluppo e produzione

PHP è un linguaggio interpretato in quanto compila le istruzioni prima di eseguirle. Questo è in genere vantaggioso perché durante i tempi di sviluppo le fonti spesso cambiano, mentre i tempi di esecuzione non sono poi così cruciali. Tuttavia, in fase di produzione è vero il contrario, poiché stabilità e prestazioni diventano le preoccupazioni principali.

Cache

La memorizzazione nella cache è comune e vivamente consigliata perché migliora le prestazioni e aumenta la stabilità archiviando istruzioni di script precompilate.

OPcache è la soluzione più utilizzata ed è disponibile per impostazione predefinita.

Caricamento automatico

La funzionalità caricamento automatico è comune perché migliora le prestazioni e aumenta la stabilità caricando informazioni precompilate sulle classi.

La libreria client PHP è conforme allo standard PSR-4 per il caricamento automatico e fornisce la definizione all'interno del file composer.json. Le opzioni dedicate di Composer, come --optimize-autoloader o --classmap-authoritative, ad esempio, possono essere utilizzate immediatamente.

Logging

L'impostazione di un livello alto per i logger come ERROR può aiutare a ridurre l'overhead del tempo di esecuzione e il consumo di memoria.

Per ulteriori informazioni, consulta la guida a Logging.

Debug e profilazione

Consigliamo di disabilitare gli strumenti debugger e profiler, in quanto di solito hanno un overhead dei tempi di esecuzione.

Precarica

A partire da PHP 7.4, il precaricamento di OPcache può essere utilizzato per precaricare gli script in memoria, facendo un passo in più rispetto alla normale memorizzazione nella cache.

Uno script deve essere progettato per sfruttare questa funzionalità, al contrario della libreria client PHP, dal momento che non esiste un modo generico di implementare il precaricamento di OPcache. Inoltre, il compromesso tra l'utilizzo della memoria e il guadagno in termini di prestazioni è estremamente specifico per un determinato progetto ed esecuzione.