Desempenho

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

A maioria de essas práticas recomendadas é aplicável a todos os idiomas. Este guia aborda as práticas recomendadas 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, 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 scripting 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 boa prática fazer upgrade regularmente para uma versão mais recente do PHP, já que ela geralmente vem com uma performance geral melhor. Lista de versões do PHP com suporte.

Versões não usadas da API Google Ads

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 à versão.

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: v25, e queira remover o suporte para as versões não usadas da API: v24 e v23.

No arquivo composer.json do projeto, defina um script do Composer (chamado remove-google-ads-api-version-support) que aproveite o utilitário fornecido por 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 v23 and v24 of the Google Ads API.
echo "# Removing support..."
composer run-script remove-google-ads-api-version-support -- 23 24

# 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 amostra abaixo indica uma redução de tamanho de arquivo de 50 MB e a única versão com suporte restante é V25:

# Supported Google Ads API versions:
V23
V24
V25
# Vendor folder size:
110M    ./vendor
# Removing support...
> Google\Ads\GoogleAds\Util\ApiVersionSupport::remove
Removing support for the version 23 of Google Ads API...
Done
Removing support for the version 24 of Google Ads API...
Done
# Supported Google Ads API versions:
V25
# Vendor folder size:
60M     ./vendor

Desenvolvimento versus produção

O PHP é uma linguagem interpretada ou seja, primeiro compila instruções antes de executá-las. Isso geralmente é vantajoso, já que, durante o 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, já que a estabilidade e a performance se tornam as principais preocupações.

Cache

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

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

Carregamento automático

O carregamento automático é comum porque melhora a performance e aumenta a estabilidade carregando informações pré-compiladas sobre classes.

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

Logging

Definir registradores para 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 de geração de registros para mais informações.

Depuração e criação de perfis

Recomendamos desativar as ferramentas de depurador e criador de perfis, já que elas geralmente vêm com alguma sobrecarga de 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 em cache normal.

Um script precisa ser projetado para aproveitar esse recurso, mas a biblioteca de cliente do PHP não, já que 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.