Desempenho

A biblioteca de cliente PHP facilita as interações com a API Google Ads com a configuração mínima. No entanto, o desempenho depende muito da forma é 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

Protobuf é usado pelo gRPC e a API Google Ads para mensagens de solicitação e resposta. Duas implementações são disponíveis, embora o escrito em C tenha o 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. PHP O CGI (Common Gateway Interface) tem uma vantagem importante porque pode compartilhar entre as execuções.

Versão do PHP

É uma prática recomendada fazer upgrade regularmente para uma versão mais recente do PHP, pois geralmente resulta em um desempenho geral melhor. Lista de PHP compatíveis padrão.

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 às versões da API do Google Ads que não são usados podem ser removido da biblioteca de cliente com segurança. Como pode ser útil acelerar a execução ou reduzir o uso de memória, a biblioteca de cliente oferece utilitários para fazer isso de forma 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 usa o utilitário fornecido pelo a 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 versus produção

PHP é uma linguagem interpretada porque compila as instruções antes de executá-las. Isso geralmente é vantajoso porque, durante o desenvolvimento, as origens muitas vezes mudam durante a execução o tempo 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 PHP está em conformidade com PSR-4 para e fornece a definição como parte do composer.json . Opções dedicadas do Composer, como --optimize-autoloader ou --classmap-authoritative, por exemplo, podem ser pronto para uso.

Logging

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

Consulte o Guia de geração de registros para mais informações.

Depuração e criação de perfis

Recomendamos desativar as ferramentas do depurador e do criador de perfil, porque elas geralmente vêm com sobrecarga no tempo de execução.

Pré-carregar

Desde o PHP 7.4, o OPcache pré-carregamento pode ser usado para pré-carregar scripts na memória, indo um passo além armazenamento em cache.

Um script precisa ser projetado para aproveitar esse recurso, mas a biblioteca de cliente do PHP não tem, já que não há uma maneira genérica de implementar o pré-carregamento da OPcache, e o trade-off entre o uso de memória e o ganho de desempenho é muito específico para um determinado projeto e execução.