Desempenho

A biblioteca cliente de PHP facilita as interações com a Google Ads API oferecendo pouca configuração de sua parte. No entanto, a performance depende muito de como a biblioteca é usada e integrada.

A maioria dessas práticas recomendadas são aplicáveis a todos os idiomas. Este guia aborda as específicas do PHP.

Implementação do Protobuf

O Protobuf é usado pelo gRPC e pela API Google Ads para mensagens de solicitação e resposta. Duas implementações estão disponíveis, mas a escrita em C tem melhor desempenho.

Consulte o guia do Protobuf para mais informações.

Modo de operação do interpretador do PHP

O PHP é uma linguagem de script versátil e tem muitos modos de operação, dependendo do uso. O PHP CGI (Common Gateway Interface) tem uma vantagem notável porque pode compartilhar recursos entre execuções.

Versão do PHP

É uma prática recomendada fazer upgrade regularmente para uma versão mais recente do PHP, porque ela geralmente apresenta um desempenho geral melhor. Lista de versões do PHP com suporte.

Versões da API Google Ads não usadas

Todas as versões da biblioteca de cliente são compatíveis com várias versões da API Google Ads. Para cada versão da API Google Ads com suporte da biblioteca de cliente, há pacotes dedicados.

Os pacotes dedicados a versões da API Google Ads que não são usados podem ser removidos com segurança da biblioteca de cliente. Como pode ser útil acelerar a execução ou reduzir o consumo de memória, a biblioteca de cliente fornece utilitários para fazer isso de maneira programática.

Exemplo

Suponha que você esteja implementando a biblioteca de cliente que usa apenas a versão mais recente da API: v18, e que você queira remover o suporte para as versões da API não usadas: v17 e v16.

No arquivo composer.json do projeto, defina um script do Composer (chamado remove-google-ads-api-version-support) que aproveita o utilitário fornecido pela biblioteca de cliente na classe ApiVersionSupport:

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

Em seguida, use o script do Composer com os números de versão como parâmetros e imprima algumas mensagens de status:

# 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

A saída de execução de exemplo abaixo indica uma redução de 50 MB no tamanho do arquivo, e a única versão com suporte restante é 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

Desenvolvimento e produção

O PHP é uma linguagem interpretada porque primeiro compila as instruções antes de executá-las. Isso geralmente é vantajoso, porque durante o desenvolvimento, as fontes geralmente mudam, enquanto o tempo de execução não é tão crucial. No entanto, o oposto é verdadeiro no momento da produção, já que a estabilidade e o desempenho se tornam as principais preocupações.

Cache

O armazenamento em cache é comum e altamente recomendado porque melhora o desempenho e aumenta a estabilidade ao armazenar instruções de script pré-compiladas.

O OPcache é a solução mais usada e está disponível por padrão.

Carregamento automático

O carregamento automático é comum porque melhora o desempenho e aumenta a estabilidade ao carregar informações pré-compiladas sobre as classes.

A biblioteca de cliente do PHP está em conformidade com a PSR-4 para carregamento automático e fornece a definição como parte do arquivo composer.json. As opções dedicadas do Composer, como --optimize-autoloader ou --classmap-authoritative, por exemplo, podem ser usadas imediatamente.

Logging

Configurar os loggers em um nível alto, como ERROR, pode ajudar a reduzir a sobrecarga do tempo de execução e o consumo de memória.

Consulte o guia de registro para mais informações.

Depuração e criação de perfil

Recomendamos desativar as ferramentas de depurador e de perfil, já que elas geralmente têm alguns custos adicionais de tempo de execução.

Pré-carregar

Desde o PHP 7.4, o carregamento prévio da OPcache pode ser usado para carregar scripts na memória, indo além do armazenamento normal.

Um script precisa ser projetado para aproveitar esse recurso, mas a biblioteca de cliente PHP não faz isso, porque não há uma maneira genérica de implementar o pré-carregamento do OPcache, e a compensação entre o uso da memória e o ganho de desempenho é altamente específica para um determinado projeto e execução.