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 das práticas recomendadas gerais se aplica a todas as linguagens. Este guia aborda otimizações de performance específicas do PHP.
Implementações de Protobuf e gRPC
O Protobuf é usado pelo gRPC e pela API Google Ads para
mensagens de solicitação e resposta. Duas implementações estão disponíveis (PHP puro e uma extensão C), e as extensões C para protobuf e grpc oferecem uma serialização e performance de rede substancialmente melhores.
Consulte o guia do Protobuf e o guia de transporte para mais informações.
Modo de operação do interpretador do PHP
O PHP é uma linguagem de script versátil e tem vários modos de operação, dependendo do uso. O PHP-FPM (FastCGI Process Manager) ou servidores de aplicativos persistentes têm uma vantagem notável em relação ao CGI padrão, porque os processos de worker persistentes podem reutilizar bytecode armazenado em cache (pelo OPcache) e recursos em todas as solicitações.
Versão do PHP
Faça upgrade regularmente para uma versão mais recente do PHP para aproveitar as melhorias de performance do ambiente de execução. Confira a 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 oferecem suporte a 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 a essa versão.
Os pacotes dedicados a versões da API Google Ads que não são usados pelo aplicativo podem ser removidos com segurança da biblioteca de cliente. Para reduzir a ocupação de memória e acelerar a execução, a biblioteca de cliente oferece um utilitário para remover versões de API não usadas de maneira programática.
Exemplo
Suponha que você esteja implementando um aplicativo cliente que usa apenas a versão mais recente da API (v26) e queira remover o suporte para as versões não usadas da API (v23, v24 e v25).
No arquivo composer.json do projeto, defina um script do Composer (chamado
remove-google-ads-api-version-support) que aproveita o utilitário fornecido por
a biblioteca de cliente em ApiVersionSupport:
"scripts": {
"remove-google-ads-api-version-support": [
"Google\\Ads\\GoogleAds\\Util\\ApiVersionSupport::remove"
]
}
Em seguida, execute o script do Composer com os números de versão como parâmetros e imprima 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 unused Google Ads API versions.
echo "# Supported Google Ads API versions:"
find ./vendor/googleads/google-ads-php/src/Google/Ads/GoogleAds/V* \
-maxdepth 0 | grep -oE 'V[0-9]+$'
echo "# Vendor folder size:"
du -sh ./vendor
# Use the Composer script to remove the unused versions
# v23, v24, and
# v25 of the Google Ads API.
echo "# Removing support..."
composer run-script remove-google-ads-api-version-support -- \
23 \
24 \
25
# Output the vendor folder size and the list of Google Ads API versions that are
# supported after removing support for unused Google Ads API versions.
echo "# Supported Google Ads API versions:"
find ./vendor/googleads/google-ads-php/src/Google/Ads/GoogleAds/V* \
-maxdepth 0 | grep -oE 'V[0-9]+$'
echo "# Vendor folder size:"
du -sh ./vendor
A saída de execução de amostra a seguir mostra a redução do tamanho do arquivo, com V26 como a única versão com suporte restante:
# Supported Google Ads API versions:
V23
V24
V25
V26
# Vendor folder size:
135M ./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
Removing support for the version 25 of Google Ads API...
Done
# Supported Google Ads API versions:
V26
# Vendor folder size:
60M ./vendor
Desenvolvimento x produção
O PHP é uma linguagem interpretada que compila instruções antes de executá-las. Isso é vantajoso durante o desenvolvimento, quando os arquivos de origem mudam com frequência e o tempo de execução é menos crítico. Em ambientes de produção, a estabilidade e a performance se tornam as principais preocupações.
Cache
O armazenamento em cache é recomendado porque melhora a performance e aumenta a estabilidade armazenando bytecode de script pré-compilado na memória compartilhada.
OPcache é a solução padrão e é agrupado com o PHP por padrão.
Carregamento automático
O carregamento automático melhora a performance e a estabilidade carregando informações de mapa de classes pré-compiladas.
A biblioteca de cliente do PHP está em conformidade com PSR-4 para carregamento automático e fornece
a definição como parte do arquivo composer.json. As opções dedicadas
da CLI do Composer, como --optimize-autoloader ou
--classmap-authoritative, podem ser usadas imediatamente em builds
de produção.
Logging
Definir registradores para um limite mais alto, como ERROR ou WARNING, na produção ajuda a reduzir a sobrecarga de E/S 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
Desative as extensões de depurador e criador de perfil (como o Xdebug) na produção, porque elas introduzem uma sobrecarga de execução substancial.
Pré-carregar
Desde o PHP 7.4, o pré-carregamento do OPcache pode ser usado para pré-carregar scripts na memória na inicialização do servidor, indo um passo além do armazenamento em cache padrão do OPcache.
Um script de pré-carregamento precisa ser projetado especificamente para seu aplicativo. A biblioteca de cliente do PHP não fornece um script de pré-carregamento genérico porque a compensação entre o uso da memória e o ganho de desempenho é específica para cada projeto e ambiente de implantação.