Otimização do desempenho do PHP

O desempenho do aplicativo não é apenas um problema técnico. Performance pode fazer um negócio bem sucedido ou derrubá-lo. Então, se você acha que poucos milissegundos não são grandes, pense novamente.

Por que o desempenho é importante?

Existem basicamente três razões pelas quais o desempenho é essencial. O primeiro é a experiência do usuário; Se o seu aplicativo levar muito tempo para carregar, você estará arriscando seus usuários a mudar para concorrentes ou deixar comentários ruins que afetarão negativamente os negócios. 

A segunda razão é “Conversões”. Conversões são o número de usuários que realmente compram seu produto ou baixam seu e-book ou geralmente os usuários que dão dinheiro para seus serviços. Um site mais rápido significa mais conversões e mais lucro. A terceira razão é “Escalabilidade”.

Quanto mais solicitações seu aplicativo puder manipular por segundo, mais tráfego você poderá manipular. Por exemplo, se seu aplicativo puder manipular um único processo em 100 ms, isso significa que seu aplicativo pode atender a 10 solicitações por segundo, portanto, se você reduzir o tempo de processamento do aplicativo para a metade, a capacidade do aplicativo duplicará.

Estudos de Casos de Desempenho:

Firefox: quando eles fizeram a página de download mais rápida em 2,2 segundos, eles conseguiram mais 10 milhões de downloads.

Shopzilla: quando o site deles ficou 5 segundos mais rápido, a taxa de conversão aumentou em 7–12%.

Bing: quando o site de mecanismos de pesquisa da Microsoft ficou 1s mais lento, eles perderam 2,8% de sua receita.

Yahoo !: mesmo que o Bing, quando é 0.4s mais lento, eles recebem de 5 a 9% menos tráfego.

Portanto, seja qual for o tipo de negócio que seu aplicativo faz, um aplicativo mais rápido significa mais receita.

Otimização de desempenho do PHP:

– Escolha a versão correta

Bem, este é óbvio especialmente após o PHP7 que tem o melhor desempenho entre as versões antigas do PHP. Eu não farei uma comparação aqui entre as versões do PHP já que há tantos artigos discutidos, mas você ainda pode dar uma olhada no seguinte gráfico mostrando o desempenho das versões do PHP rodadas por diferentes CMSs.

– Micro-otimização PHP

Micro-otimização é uma pequena alteração no código que melhora o desempenho do seu aplicativo. Por exemplo, se você for usar um loop for, é sempre melhor calcular o tamanho antecipadamente. A imagem seguinte mostra o resultado de loop for com 1000 chaves com valores de 1 byte. Você pode notar a melhoria no tempo de execução.

Independentemente da pequena melhoria que está acontecendo com a Micro-Otimização, ainda não é suficiente. 
Você pode obter mais insights de Micro-otimização em phpbench.com .

– XHProf: criação de perfil de código PHP

Depois de termos visto o valor limitado do PHP Micro-Optimization, é hora de determinar com precisão qual parte de nosso código é lenta sem a necessidade de adivinhar o uso de uma ferramenta de criação de perfil chamada XHProf. Depois de instalar e configurar o XHProf no seu servidor, ‘você pode encontrar um tutorial sobre como instalá-lo no youtube.’ O XHProf irá anexar cabeçalho e rodapé a todos os seus scripts PHP e gerar um relatório onde você poderá encontrar todas as funções executadas, o tempo de execução e o número de chamadas de cada função. 
A próxima imagem é o resultado de criação de perfil de uma página de produtos construída com uma estrutura laravel. Ele mostra que o getProductData () foi chamado 40 vezes com um tempo total de execução de 5 segundos.

Bem, à primeira vista, você pode esperar um problema “N + 1”. O que significa que, se você corrigir, a página de produtos será 5 segundos mais rápida.

O problema N + 1 acontece quando você consulta um banco de dados relacional para recuperar dados de duas tabelas diferentes. Por exemplo, você consulta todos os produtos para obter nomes e IDs. E, para cada produto, você consulta outra tabela para obter detalhes como cores disponíveis ou disponibilidade em estoque. Geralmente, pode ser corrigido reescrevendo a consulta para recuperar todos os seus dados em uma ou duas consultas no máximo. Vamos discuti-lo mais tarde no artigo de otimização de consulta de banco de dados.

  • Armazenamento em cache A
    implementação de uma camada de armazenamento em cache deve ter um impacto, tirando a carga do banco de dados e diminuindo o tempo de recuperação dos dados necessários com freqüência. Tanto o Memcache quanto o Redis são amplamente utilizados para armazenamento em cache; no entanto, o Redis tem algumas vantagens competitivas, como sincronizar dados para o disco, de modo que a reinicialização dos dados do servidor não seja perdida e tenha replicação mestre / escravo integrada para que você possa ampliar facilmente o cluster de redis à medida que seu aplicativo cresce.

Deixe uma resposta