Rendimento

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

La maggior parte di queste best practice è applicabile a tutte le lingue. Questa guida illustra quelle specifiche per PHP.

Implementazione di Protobuf

Protobuf viene 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 prestazioni migliori.

Per saperne di più, consulta la guida di Protobuf.

Modalità di funzionamento dell'interprete PHP

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

Versione di PHP

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

Versioni dell'API Google Ads non utilizzate

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 velocizzare l'esecuzione o ridurre il footprint della memoria, la libreria client fornisce utilità per farlo in modo programmatico.

Esempio

Supponiamo che tu stia implementando la libreria client che utilizza solo l'ultima versione dell'API, v25, e che tu voglia rimuovere il supporto per le versioni dell'API non utilizzate, v24 e v23.

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

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

Poi, 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 v23 and v24 of the Google Ads API.
echo "# Removing support..."
composer run-script remove-google-ads-api-version-support -- 23 24

# 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 è V25:

# Supported Google Ads API versions:
V23
V24
V25
# Vendor folder size:
110M    ./vendor
# Removing support...
> Google\Ads\GoogleAds\Util\ApiVersionSupport::remove
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

Sviluppo e produzione

PHP è un linguaggio interpretato in quanto compila le istruzioni prima di eseguirle. In genere, questo è vantaggioso perché durante lo sviluppo le origini cambiano spesso, mentre il tempo di esecuzione non è così importante. Tuttavia, il contrario è vero in fase di produzione, poiché la stabilità e il rendimento diventano le preoccupazioni principali.

Cache

La memorizzazione nella cache è comune e altamente consigliata perché migliora il rendimento e aumenta la stabilità memorizzando le istruzioni dello script precompilato.

OPcache è la soluzione di uso comune ed è disponibile per impostazione predefinita.

Caricamento automatico

Il caricamento automatico è comune perché migliora il rendimento e aumenta la stabilità caricando informazioni precompilate sulle classi.

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

Logging

L'impostazione dei logger su un livello elevato come ERROR può contribuire a ridurre l'overhead del tempo di esecuzione e il consumo di memoria.

Per saperne di più, consulta la guida al logging.

Debug e profilazione

Ti consigliamo di disattivare gli strumenti di debug e profilazione, in quanto in genere comportano un overhead del tempo di esecuzione.

Precarica

A partire da PHP 7.4, è possibile utilizzare il precaricamento di OPcache per precaricare gli script in memoria, andando oltre la memorizzazione nella cache normale.

Uno script deve essere progettato per sfruttare questa funzionalità, ma la libreria client PHP non lo fa perché non esiste un modo generico per implementare il precaricamento di OPcache e il compromesso tra memoria utilizzata e aumento del rendimento è molto specifico per un determinato progetto ed esecuzione.