A biblioteca de cliente PHP facilita as interações com a API Google Ads com configuração mínima da sua parte. No entanto, o desempenho depende muito de como a biblioteca é usada e integrada.
A maioria das práticas recomendadas gerais se aplica a todos os idiomas. 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. Há duas implementações disponíveis (PHP puro e uma extensão em C), e as extensões em C para protobuf e grpc oferecem uma serialização e um desempenho de rede muito melhores.
Consulte o guia do Protobuf e o guia de transporte para mais informações.
Modo de operação do interpretador 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 sobre o CGI padrão porque processos de trabalho persistentes podem reutilizar bytecode 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 e aproveite as melhorias de performance do ambiente de execução. Confira a 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 API Google Ads compatível com a biblioteca de cliente, há pacotes dedicados.
Os pacotes dedicados a versões da API Google Ads que não são usadas pelo seu 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 uma utilidade para remover versões de API não usadas de forma programática.
Exemplo
Suponha que você esteja implementando um aplicativo cliente que usa apenas a versão mais recente da API (v25) e queira remover o suporte para as versões não utilizadas (v22, v23 e v24).
No arquivo composer.json do projeto, defina um script do Composer (chamado
remove-google-ads-api-version-support) que aproveita a utilidade fornecida pela
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
# v22, v23, and
# v24 of the Google Ads API.
echo "# Removing support..."
composer run-script remove-google-ads-api-version-support -- \
22 \
23 \
24
# 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
O exemplo de saída de execução a seguir mostra a redução do tamanho do arquivo, com
V25 como a única versão compatível restante:
# Supported Google Ads API versions:
V22
V23
V24
V25
# Vendor folder size:
135M ./vendor
# Removing support...
> Google\Ads\GoogleAds\Util\ApiVersionSupport::remove
Removing support for the version 22 of Google Ads API...
Done
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 x produçã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 o desempenho se tornam as principais preocupações.
Cache
O armazenamento em cache é recomendado porque melhora o desempenho e aumenta a estabilidade armazenando bytecode de script pré-compilado na memória compartilhada.
O OPcache é a solução padrão e vem com o PHP por padrão.
Carregamento automático
O carregamento automático melhora a performance e a estabilidade ao carregar informações pré-compiladas do mapa de 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 da CLI do Composer, como --optimize-autoloader ou --classmap-authoritative, podem ser usadas imediatamente em builds de produção.
Logging
Definir loggers para um limite mais alto, como ERROR ou WARNING em produção, ajuda a reduzir o overhead 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 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 oferece um script de pré-carregamento genérico porque a compensação entre uso da memória e ganho de desempenho é específica para cada projeto e ambiente de implantação.