Desempenho

A biblioteca de cliente PHP facilita as interações com a API Google Ads com a configuração mínima que você precisar. No entanto, o desempenho depende muito de como a biblioteca é usada e integrada.

A maioria destas práticas recomendadas se aplica a todos os idiomas. Este guia aborda os que são específicos ao PHP.

Implementação de protobuf

O Protobuf (em inglês) é usado pelo gRPC e pela API Google Ads para mensagens de solicitação e resposta. Duas implementações estão disponíveis, embora a escrita em C tenha o melhor desempenho.

Consulte o Guia do Protobuf (em inglês) para mais informações.

Modo de operação do intérprete de 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

É recomendável fazer upgrade para uma versão do PHP mais recente regularmente, já que esse formato geralmente apresenta um desempenho geral melhor. Lista de versões do PHP compatíveis.

Versões não usadas da API Google Ads

Todas as versões da biblioteca cliente são compatíveis com várias versões da API Google Ads. Há um pacote dedicado a cada versão da API Google Ads compatível com a biblioteca de cliente.

Os pacotes dedicados a versões da API Google Ads que não são usadas 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 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: v11 e queira remover o suporte para as versões não utilizadas da API: v10 e v9.

No arquivo composer.json do projeto, defina um script do Composer (chamado remove-google-ads-api-version-support) que aproveite 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 exiba 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 v9 and v10 of the Google Ads API.
echo "# Removing support..."
composer run-script remove-google-ads-api-version-support -- 9 10

# 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

O exemplo de saída de execução abaixo indica uma redução de tamanho de arquivo de 50 M, e a única versão compatível restante é V11:

# Supported Google Ads API versions:
V9
V10
V11
# Vendor folder size:
110M    ./vendor
# Removing support...
> Google\Ads\GoogleAds\Util\ApiVersionSupport::remove
Removing support for the version 9 of Google Ads API...
Done
Removing support for the version 10 of Google Ads API...
Done
# Supported Google Ads API versions:
V11
# Vendor folder size:
60M     ./vendor

Desenvolvimento x produção

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

Cache

O armazenamento em cache é comum e altamente recomendado, já que melhora o desempenho e aumenta a estabilidade armazenando 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, carregando informações pré-compiladas sobre classes.

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

Geração de registros

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

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

Depuração de perfil

Recomendamos desativar as ferramentas de criação de perfil e depurador, que geralmente têm sobrecarga de tempo de execução.

Pré-carregar

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

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 de OPcache e a compensação entre uso de memória e ganho de desempenho é altamente específica para um determinado projeto e execução.