Desempenho

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

A maioria dessas práticas recomendadas se aplica a todos os idiomas. Este guia aborda os específicos para PHP.

Implementação de 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, 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 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) do PHP tem uma vantagem significativa porque pode compartilhar recursos entre execuções.

Versão do PHP

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

Versões não utilizadas 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á pacotes dedicados para cada versão da Google Ads API compatível com a biblioteca cliente.

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 para 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 use apenas a versão mais recente da API: v16, e queira remover o suporte para as versões da API não usadas: v15 e v14.

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

# 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 MB, e a única versão com suporte restante é V16:

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

Desenvolvimento versus produção

O PHP é uma linguagem interpretada porque primeiro compila as instruções antes de executá-las. Isso geralmente é vantajoso, já que, durante o tempo de desenvolvimento, as fontes geralmente mudam, enquanto o tempo de execução não é tão crucial. No entanto, o oposto acontece 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 scripts 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 o 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.

Geração de registros

Definir os loggers para 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 perfil

Recomendamos desativar as ferramentas do depurador e de Criação de perfil, porque elas geralmente trazem uma sobrecarga no tempo de execução.

Pré-carregar

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

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