A otimização do desempenho do PHP garante que nossos aplicativos da web funcionem sem problemas, respondam rapidamente e administrem o tráfego com eficiência. Abaixo está um guia passo a passo detalhado sobre como maximizar efetivamente o desempenho do PHP, com exemplos práticos para cada estratégia de otimização.
Comece verificando a versão atual do PHP instalada em seu sistema:
php -v
Se sua versão estiver desatualizada, a atualização para a versão estável mais recente do PHP geralmente traz melhorias de desempenho e novos recursos.
Para instalar a versão mais recente do PHP, execute os seguintes comandos para Ubuntu:
sudo apt update sudo apt install software-properties-common sudo add-apt-repository ppa:ondrej/php sudo apt install php8.2 # Replace with the latest version
Cada nova versão do PHP traz melhorias de desempenho. Por exemplo, o PHP 7.x oferece quase 50% de melhoria no tempo de execução em comparação com o PHP 5.x, e o PHP 8.x tem outras melhorias significativas.
Opcache armazena bytecode de script pré-compilado na memória, reduzindo a necessidade do PHP carregar e analisar scripts em cada solicitação. Para habilitá-lo:
sudo nano /etc/php/8.2/fpm/php.ini # Use your PHP version
opcache.enable=1 opcache.memory_consumption=128 opcache.max_accelerated_files=10000 opcache.revalidate_freq=0
sudo systemctl restart php8.2-fpm sudo systemctl restart nginx
Opcache pode melhorar drasticamente o desempenho, eliminando a necessidade de compilar código PHP em cada solicitação, reduzindo significativamente o uso da CPU e o tempo de solicitação.
A indexação inadequada do banco de dados pode retardar a execução da consulta. Certifique-se de indexar colunas usadas em cláusulas WHERE ou para classificação.
Exemplo de consulta MySQL:
CREATE INDEX idx_user_email ON users(email);
Crie um perfil de suas consultas de banco de dados para encontrar gargalos. O Eloquent ORM do Laravel, por exemplo, permite o perfil de consulta:
DB::enableQueryLog(); $users = DB::table('users')->get(); dd(DB::getQueryLog());
Ao otimizar suas consultas de banco de dados e indexar colunas críticas, você pode reduzir bastante o tempo de execução de consultas, acelerando assim seu aplicativo PHP.
Gzip reduz o tamanho dos dados enviados do seu servidor para o cliente, tornando o carregamento da página mais rápido. Para habilitá-lo no Nginx:
sudo nano /etc/nginx/nginx.conf
gzip on; gzip_comp_level 2; gzip_types text/css application/javascript application/json image/svg xml; gzip_min_length 256;
sudo systemctl restart nginx
A ativação da compactação Gzip reduz a quantidade de dados que precisam ser transferidos, resultando em tempos de carregamento de página mais rápidos e redução no uso de largura de banda.
CDNs como Cloudflare ou Amazon CloudFront armazenam cópias de ativos estáticos como CSS, JavaScript e imagens em servidores distribuídos em todo o mundo, tornando-os disponíveis mais perto do usuário.
Exemplo:
Ao transferir conteúdo estático para uma CDN, você reduz a carga em seu servidor e melhora drasticamente os tempos de resposta para usuários em todo o mundo.
Certifique-se de usar PHP-FPM (FastCGI Process Manager), que é melhor otimizado para ambientes de alta carga:
sudo apt install php8.2-fpm
Você pode ajustar as configurações do PHP-FPM para lidar com solicitações mais eficientes ajustando as configurações pm.max_children, pm.start_servers, pm.min_spare_servers e pm.max_spare_servers no arquivo de configuração do pool PHP-FPM.
Edite o arquivo de configuração do pool:
sudo nano /etc/php/8.2/fpm/pool.d/www.conf
Aumentar pm.max_children com base na memória e no tráfego disponíveis:
pm.max_children = 50 pm.start_servers = 10 pm.min_spare_servers = 5 pm.max_spare_servers = 20
Reinicie PHP-FPM e Nginx:
sudo systemctl restart php8.2-fpm sudo systemctl restart nginx
PHP-FPM permite que seus processos PHP lidem com solicitações simultâneas de maneira mais eficiente, reduzindo o tempo de resposta do servidor sob carga pesada.
Minimizar seus arquivos CSS, JavaScript e HTML removendo espaços em branco e comentários desnecessários reduz o tamanho do arquivo.
Use ferramentas como Laravel Mix ou Gulp:
npm install laravel-mix --save-dev
Exemplo de arquivo webpack.mix.js para Laravel:
const mix = require('laravel-mix'); mix.js('resources/js/app.js', 'public/js') .sass('resources/sass/app.scss', 'public/css') .minify('public/js/app.js') .minify('public/css/app.css');
Em seu arquivo de configuração Nginx, adicione cache para ativos estáticos:
location ~* \.(css|js|jpg|jpeg|png|gif|ico|woff|woff2)$ { expires 1y; access_log off; add_header Cache-Control "public"; }
Minimizar e agrupar ativos, além de ativar o cache do navegador, reduz o tamanho dos seus arquivos e diminui o tempo de carregamento, levando a um aplicativo mais rápido.
Para instalar o Redis:
sudo apt install redis-server
No Laravel, abra o arquivo .env e configure o Redis como o driver de cache:
CACHE_DRIVER=redis
Use o cache de consulta para acelerar consultas repetidas ao banco de dados:
$users = Cache::remember('users', 60, function() { return DB::table('users')->get(); });
Ao armazenar em cache as consultas do banco de dados, você reduz a carga do banco de dados e melhora drasticamente os tempos de resposta para dados acessados com frequência.
Otimize os autoloaders do Composer para produção:
composer install --optimize-autoloader --no-dev
No Laravel, desative quaisquer provedores de serviços não utilizados em config/app.php para reduzir o uso de memória e acelerar o tempo de inicialização do aplicativo.
A otimização do carregamento automático compila mapas de classes, tornando o carregamento das classes mais rápido. Desabilitar serviços não utilizados ajuda o aplicativo a usar menos recursos.
Instale o telescópio Laravel para criar o perfil de sua aplicação:
composer require laravel/telescope php artisan telescope:install php artisan migrate php artisan serve
Você pode integrar ferramentas de terceiros como New Relic ou Blackfire para analisar gargalos de aplicativos, desempenho de banco de dados e muito mais.
Ferramentas de monitoramento e criação de perfil ajudam a identificar consultas lentas, vazamentos de memória e gargalos em seu aplicativo PHP, permitindo que você corrija problemas de desempenho de forma proativa.
Seguindo essas etapas, você pode melhorar significativamente o desempenho do seu aplicativo PHP. Desde a atualização do PHP e habilitação do cache Opcode até a otimização de consultas de banco de dados e configuração do PHP-FPM, cada etapa contribui para um aplicativo mais responsivo e escalável.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3