Performance

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

O Protobuf é usado pelo gRPC e pela API Google Ads para mensagens de solicitação e resposta. Há duas implementações disponíveis, embora a escrita em C tenha a melhor performance.

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 CGI (Common Gateway Interface) para PHP tem uma vantagem importante porque pode compartilhar recursos entre as 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 compatíveis.

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 Google Ads API compatível com a biblioteca de cliente, há pacotes dedicados para a versão.

Os pacotes dedicados às versões da Google Ads API que não são usadas podem ser removidos com segurança da biblioteca 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 (v17) e quer remover a compatibilidade com as versões não usadas da API (v16 e v15).

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 v15 and v16 of the Google Ads API.
echo "# Removing support..."
composer run-script remove-google-ads-api-version-support -- 15 16

# 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 da execução abaixo indica uma redução de 50 milhões no tamanho do arquivo, e a única versão compatível restante é V17:

# Supported Google Ads API versions:
V15
V16
V17
# Vendor folder size:
110M    ./vendor
# Removing support...
> Google\Ads\GoogleAds\Util\ApiVersionSupport::remove
Removing support for the version 15 of Google Ads API...
Done
Removing support for the version 16 of Google Ads API...
Done
# Supported Google Ads API versions:
V17
# Vendor folder size:
60M     ./vendor

Desenvolvimento versus produção

O PHP é uma linguagem interpretada porque compila instruções antes de executá-las. Isso geralmente é vantajoso, já que, durante o tempo de desenvolvimento, as origens geralmente mudam, mas o tempo de execução não é tão importante. 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 porque melhora o desempenho e aumenta a estabilidade ao armazenar instruções de script pré-compilado.

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 imediatamente.

Geração de registros

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 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 apresentam alguma sobrecarga no tempo de execução.

Pré-carregar

Desde o PHP 7.4, o pré-carregamento do OPcache (em inglês) pode ser usado para pré-carregar scripts na memória, o que é um passo além do armazenamento em cache 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 de memória e o ganho de desempenho é altamente específica para um determinado projeto e execução.