La libreria client PHP semplifica le interazioni con l'API Google Ads con una configurazione minima da parte tua. Tuttavia, le prestazioni dipendono in modo significativo da come la libreria viene utilizzata e integrata.
La maggior parte delle best practice generali è applicabile a tutte le lingue. Questa guida illustra le ottimizzazioni delle prestazioni specifiche per PHP.
Implementazioni Protobuf e gRPC
Protobuf viene utilizzato da gRPC e dall'API Google Ads per i messaggi di richiesta e risposta. Sono disponibili due implementazioni (PHP puro e un'estensione C) e le estensioni C per protobuf e grpc forniscono prestazioni di rete e serializzazione sostanzialmente migliori.
Per saperne di più, consulta la guida a Protobuf e la guida al trasporto.
Modalità operativa dell'interprete PHP
PHP è un linguaggio di scripting versatile e ha diverse modalità di funzionamento a seconda dell'utilizzo. PHP-FPM (FastCGI Process Manager) o i server di applicazioni persistenti presentano un vantaggio notevole rispetto al CGI standard, perché i processi worker persistenti possono riutilizzare il bytecode memorizzato nella cache (tramite OPcache) e le risorse tra le richieste.
Versione PHP
Esegui regolarmente l'upgrade a una versione più recente di PHP per usufruire dei miglioramenti delle prestazioni di runtime. Consulta l'elenco delle versioni 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.
I pacchetti dedicati alle versioni dell'API Google Ads non utilizzate dalla tua applicazione possono essere rimossi in sicurezza dalla libreria client. Per ridurre il footprint della memoria e velocizzare l'esecuzione, la libreria client fornisce un'utilità per rimuovere in modo programmatico le versioni dell'API non utilizzate.
Esempio
Supponiamo che tu stia implementando un'applicazione client che utilizza solo l'ultima versione dell'API (v26) e che tu voglia rimuovere il supporto per le versioni dell'API non utilizzate (v23, v24 e v25).
Nel file composer.json del progetto, definisci uno script Composer (denominato
remove-google-ads-api-version-support) che sfrutta l'utilità fornita dalla
libreria client in ApiVersionSupport:
"scripts": {
"remove-google-ads-api-version-support": [
"Google\\Ads\\GoogleAds\\Util\\ApiVersionSupport::remove"
]
}
Poi, esegui lo script Composer con i numeri di versione come parametri e stampa i 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 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
# v23, v24, and
# v25 of the Google Ads API.
echo "# Removing support..."
composer run-script remove-google-ads-api-version-support -- \
23 \
24 \
25
# 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
L'output di esecuzione di esempio seguente mostra la riduzione delle dimensioni del file, con V26 come unica versione supportata rimanente:
# Supported Google Ads API versions:
V23
V24
V25
V26
# Vendor folder size:
135M ./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
Removing support for the version 25 of Google Ads API...
Done
# Supported Google Ads API versions:
V26
# Vendor folder size:
60M ./vendor
Sviluppo e produzione
PHP è un linguaggio interpretato che compila le istruzioni prima di eseguirle. Questo è un vantaggio durante lo sviluppo, quando i file di origine cambiano di frequente e il tempo di esecuzione è meno critico. Negli ambienti di produzione, la stabilità e le prestazioni diventano le preoccupazioni principali.
Cache
La memorizzazione nella cache è consigliata perché migliora le prestazioni e aumenta la stabilità memorizzando il bytecode dello script precompilato nella memoria condivisa.
OPcache è la soluzione standard ed è inclusa in PHP per impostazione predefinita.
Caricamento automatico
Il caricamento automatico migliora le prestazioni e la stabilità caricando le informazioni sulla mappa delle classi precompilate.
La libreria client PHP è conforme a PSR-4 per il caricamento automatico e fornisce la definizione nel file composer.json. Le opzioni dell'interfaccia a riga di comando di Composer dedicate, come --optimize-autoloader o --classmap-authoritative, possono quindi essere utilizzate immediatamente nelle build di produzione.
Logging
L'impostazione dei logger su una soglia più alta, ad esempio ERROR o WARNING in produzione, aiuta a ridurre l'overhead di I/O e il consumo di memoria.
Per saperne di più, consulta la guida di Logging.
Debug e profilazione
Disattiva le estensioni di debugger e profiler (come Xdebug) in produzione perché introducono un overhead di esecuzione sostanziale.
Precarica
A partire da PHP 7.4, è possibile utilizzare il precaricamento di OPcache per precaricare gli script in memoria all'avvio del server, andando un passo oltre la memorizzazione nella cache OPcache standard.
Uno script di precaricamento deve essere progettato specificamente per la tua applicazione. La libreria client PHP non fornisce uno script di precaricamento generico perché il compromesso tra memoria utilizzata e miglioramento delle prestazioni è specifico per ogni progetto e ambiente di deployment.