Otimizando a execução de código-fonte PHP

986 visualizações

Publicada em

Como detectar e minimizar problemas de performance em aplicações PHP

Publicada em: Tecnologia
  • Ótimo material, Parabéns Er Galvao.

    Walker de Alencar
    CTO
       Responder 
    Tem certeza que deseja  Sim  Não
    Insira sua mensagem aqui

Otimizando a execução de código-fonte PHP

  1. 1. Otimizando a Execução de Cófigo-Fonte PHP Otimizando a Execução de Código-Fonte CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 2/23/14 - 1 / 15 www.galvao.eti.br
  2. 2. Otimizando a Execução de Cófigo-Fonte PHP www.galvao.eti.br Quem?! Er Galvão Abbott é o Presidente da ABRAPHP – Associação Brasileira de Profissionais PHP, Diretor da PHP Conference Brasil, o principal evento de PHP da América Latina e fundador do PHPBR, Grupo de Usuários com mais de 1.200 associados. Trabalha há mais de 19 anos desenvolvendo sistemas e aplicações com interface web, sendo 14 anos com PHP e 6 anos com Zend Framework. Trabalhou com diversas empresas de grande porte, tanto nacionais como internacionais. Palestra em eventos e ministra cursos em diversas instituições, bem como in company. Site: http://www.galvao.eti.br/ Twitter: @galvao Slides e Documentos: http://slideshare.net/ergalvao https://speakerdeck.com/galvao Fork me @ http://github.com/galvao CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 2/23/14 - 2 / 15
  3. 3. Otimizando a Execução de Cófigo-Fonte PHP www.galvao.eti.br Objetivo Esta palestra tem por objetivo demonstrar técnicas de programação PHP que minimizam custos de performance, bem como analisar detalhes relativos a performance de aplicações desenvolvidas com a linguagem. Serão apresentados os seguintes tópicos: → Detectando o uso de recursos consumidos pela aplicação → Profiling → xdebug/KCachegrind → xhprof/xhgui → Configurações do PHP relacionadas a performance → Opções de código-fonte: há diferenças relevantes entre formas de código? → Conclusões CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 2/23/14 - 3 / 15
  4. 4. Otimizando a Execução de Cófigo-Fonte PHP www.galvao.eti.br Profiling → xdebug/KCachegrind ↑Confiabilidade ↓GUI Nativa (Compatibilidade) ↑Extensa Documentação ↑Intrusão mínima / inexistente → xhprof/xhgui ↑Facebook ↑GUI Web ↑Maior controle via PHP X ↓Dependências (MongoDB) ↓Documentação (Extensão, Way Back) ↓Maior intrusão no código-fonte ↓Documentação Confusa (xhgui) CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 2/23/14 - 4 / 15
  5. 5. Otimizando a Execução de Cófigo-Fonte PHP www.galvao.eti.br HowTo – xdebug/KCacheGrind Painéis a esquerda: Flat Profile Painéis a direita: Quais funções chamaram/foram chamadas pela função CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 2/23/14 - 5 / 15
  6. 6. Otimizando a Execução de Cófigo-Fonte PHP www.galvao.eti.br HowTo – xdebug/KCacheGrind – Flat Profile Tempo gasto na função (sem “filhas”) Quantas vezes a função foi chamada CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 2/23/14 - 6 / 15
  7. 7. Otimizando a Execução de Cófigo-Fonte PHP www.galvao.eti.br HowTo – xdebug/KCacheGrind – Callee Map Representação visual do peso das funções/métodos executados. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 2/23/14 - 7 / 15
  8. 8. Otimizando a Execução de Cófigo-Fonte PHP www.galvao.eti.br HowTo – xdebug/KCacheGrind – Callee Map Tempo e quantidade de chamados da função selecionada CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 2/23/14 - 8 / 15
  9. 9. Otimizando a Execução de Cófigo-Fonte PHP www.galvao.eti.br Dicas - Atualize o PHP! PHP 5.2 → 5.3* * Ref.: Documentação – Considerações de Performance – Garbage Collector CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 2/23/14 - 9 / 15
  10. 10. Otimizando a Execução de Cófigo-Fonte PHP www.galvao.eti.br Dicas - Atualize o PHP! PHP 5.3 → 5.4* → Melhorias em requisições FastCGI → Melhorias no Gerenciamento de Memória → Melhoria no tempo de inicialização/encerramento → Uso de CPU aproximadamente 15% menor → Uso de memória aproximadamente 20% menor → Latência em requisição → resposta melhorada em aproximadamente 14% → Melhoria geral de performance de 10-15% * Ref.: Rasmus Lerdorf – PHP Frameworks Day 2013 CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 2/23/14 - 10 / 15
  11. 11. Otimizando a Execução de Cófigo-Fonte PHP www.galvao.eti.br Dicas - Atualize o PHP! PHP 5.4 → 5.5* → opcode Cache nativo → Pilha de chamada pré-alocada pelo compilador → Execução melhorada de chamadas aninhadas * Ref.: Rasmus Lerdorf – PHP Conference Argentina CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 2/23/14 - 11 / 15
  12. 12. Otimizando a Execução de Cófigo-Fonte PHP www.galvao.eti.br Dicas – Boas práticas Boas práticas Use um Autoloader Sessões no DB Output Buffering Evitar Getters & Setters simples Evitar cópias de variáveis Evitar queries SQL dentro de loops Evitar execuções desnecessárias de funções dentro de loops CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 2/23/14 - 12 / 15
  13. 13. Otimizando a Execução de Cófigo-Fonte PHP www.galvao.eti.br Dicas - Configurações Configurações realpath_cache_size – Afeta operações com arquivos Se há muitas operações de arquivos, aumente realpath_cache_ttl – Duração do cache de realpath Se arquivos raramente mudam, aumente (< 5.4) register_long_arrays – Se os arrays HTTP_*_VARS devem ser utilizados Desative register_argc_argv – Para execução de scripts de terminal Desative include_path – Path para inclusão de arquivos Mantenha o mais curto possível CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 2/23/14 - 13 / 15
  14. 14. Otimizando a Execução de Cófigo-Fonte PHP www.galvao.eti.br Conclusões Conclusões ↑ Profiling (xdebug); ↑ Boas Práticas; ↑ Tunning (PHP) ↑ Ferramentas específicas que agregam (Memcached, Gearman, etc...) ↑/↓ Ferramentas alternativas que substituem (Hack, HHVM, Phalcon/Zephyr, NginX) ↓ Alterações específicas de código-fonte* * Sobre opções de código-fonte: http://phpbench.com/ CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 2/23/14 - 14 / 15
  15. 15. Otimizando a Execução de Cófigo-Fonte PHP www.galvao.eti.br Obrigado! ? Dúvidas? ↓ Críticas? ↑ Elogios?! CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 2/23/14 - 15 / 15

×