SlideShare uma empresa Scribd logo
1 de 15
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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

Mais conteúdo relacionado

Mais procurados

Oficina de WordPress #fisl14
Oficina de WordPress #fisl14Oficina de WordPress #fisl14
Oficina de WordPress #fisl14Tatiane Pires
 
Laravel 5: Entenda o ambiente e a estrutura MVC
 Laravel 5: Entenda o ambiente e a estrutura MVC Laravel 5: Entenda o ambiente e a estrutura MVC
Laravel 5: Entenda o ambiente e a estrutura MVCMichael Douglas
 
Demoiselle 3 Está chegando a hora
Demoiselle 3 Está chegando a horaDemoiselle 3 Está chegando a hora
Demoiselle 3 Está chegando a horaVanderson Silva
 
Técnicas de frontend para aplicações django - PythonBrasil[9]
Técnicas de frontend para aplicações django  - PythonBrasil[9]Técnicas de frontend para aplicações django  - PythonBrasil[9]
Técnicas de frontend para aplicações django - PythonBrasil[9]Rael Max
 
PHP like a Super Hero - V3
PHP like a Super Hero - V3PHP like a Super Hero - V3
PHP like a Super Hero - V3Elton Minetto
 
Deploy automático em projeto PHP - PHPSPIMA 2016
Deploy automático em projeto PHP - PHPSPIMA 2016Deploy automático em projeto PHP - PHPSPIMA 2016
Deploy automático em projeto PHP - PHPSPIMA 2016Felipe Klerk Signorini
 
Integração contínua - Você não tem dsculpa para não usar
Integração contínua - Você não tem dsculpa para não usarIntegração contínua - Você não tem dsculpa para não usar
Integração contínua - Você não tem dsculpa para não usarThiago Paes
 
Beyond Ruby with NodeJS - RubyConf Brasil 2010
Beyond Ruby with NodeJS - RubyConf Brasil 2010Beyond Ruby with NodeJS - RubyConf Brasil 2010
Beyond Ruby with NodeJS - RubyConf Brasil 2010Emerson Macedo
 
(A04 e A05) LabMM3 - JavaScript
(A04 e A05) LabMM3 - JavaScript(A04 e A05) LabMM3 - JavaScript
(A04 e A05) LabMM3 - JavaScriptCarlos Santos
 
Php Visao Geral Svs
Php Visao Geral SvsPhp Visao Geral Svs
Php Visao Geral Svscristhianobv
 
PHP e AJAX: do Request ao Framework
PHP e AJAX: do Request ao FrameworkPHP e AJAX: do Request ao Framework
PHP e AJAX: do Request ao FrameworkRafael Dohms
 
Django deploy - Como servir aplicações Django em produção
Django deploy - Como servir aplicações Django em produçãoDjango deploy - Como servir aplicações Django em produção
Django deploy - Como servir aplicações Django em produçãoArtur Felipe Sousa
 
Instalando o WordPress local em qualquer sistema operacional - Anyssa Ferreir...
Instalando o WordPress local em qualquer sistema operacional - Anyssa Ferreir...Instalando o WordPress local em qualquer sistema operacional - Anyssa Ferreir...
Instalando o WordPress local em qualquer sistema operacional - Anyssa Ferreir...Anyssa Ferreira
 
Mini curso de django
Mini curso de djangoMini curso de django
Mini curso de djangorosenclever
 
Javascript por debaixo dos panos
Javascript por debaixo dos panosJavascript por debaixo dos panos
Javascript por debaixo dos panosLaís Lima
 

Mais procurados (20)

Uma Olhada no Netbeans 6
Uma Olhada no Netbeans 6Uma Olhada no Netbeans 6
Uma Olhada no Netbeans 6
 
Oficina de WordPress #fisl14
Oficina de WordPress #fisl14Oficina de WordPress #fisl14
Oficina de WordPress #fisl14
 
Laravel 5: Entenda o ambiente e a estrutura MVC
 Laravel 5: Entenda o ambiente e a estrutura MVC Laravel 5: Entenda o ambiente e a estrutura MVC
Laravel 5: Entenda o ambiente e a estrutura MVC
 
Demoiselle 3 Está chegando a hora
Demoiselle 3 Está chegando a horaDemoiselle 3 Está chegando a hora
Demoiselle 3 Está chegando a hora
 
Como fazer boas libs
Como fazer boas libs Como fazer boas libs
Como fazer boas libs
 
Técnicas de frontend para aplicações django - PythonBrasil[9]
Técnicas de frontend para aplicações django  - PythonBrasil[9]Técnicas de frontend para aplicações django  - PythonBrasil[9]
Técnicas de frontend para aplicações django - PythonBrasil[9]
 
PHP like a Super Hero - V3
PHP like a Super Hero - V3PHP like a Super Hero - V3
PHP like a Super Hero - V3
 
MigraçãO
MigraçãOMigraçãO
MigraçãO
 
Deploy automático em projeto PHP - PHPSPIMA 2016
Deploy automático em projeto PHP - PHPSPIMA 2016Deploy automático em projeto PHP - PHPSPIMA 2016
Deploy automático em projeto PHP - PHPSPIMA 2016
 
Primeira Aula PHP
Primeira Aula PHPPrimeira Aula PHP
Primeira Aula PHP
 
Integração contínua - Você não tem dsculpa para não usar
Integração contínua - Você não tem dsculpa para não usarIntegração contínua - Você não tem dsculpa para não usar
Integração contínua - Você não tem dsculpa para não usar
 
Beyond Ruby with NodeJS - RubyConf Brasil 2010
Beyond Ruby with NodeJS - RubyConf Brasil 2010Beyond Ruby with NodeJS - RubyConf Brasil 2010
Beyond Ruby with NodeJS - RubyConf Brasil 2010
 
(A04 e A05) LabMM3 - JavaScript
(A04 e A05) LabMM3 - JavaScript(A04 e A05) LabMM3 - JavaScript
(A04 e A05) LabMM3 - JavaScript
 
Php Visao Geral Svs
Php Visao Geral SvsPhp Visao Geral Svs
Php Visao Geral Svs
 
GIT: O Commit, o Fluxo e a Tag
GIT: O Commit, o Fluxo e a TagGIT: O Commit, o Fluxo e a Tag
GIT: O Commit, o Fluxo e a Tag
 
PHP e AJAX: do Request ao Framework
PHP e AJAX: do Request ao FrameworkPHP e AJAX: do Request ao Framework
PHP e AJAX: do Request ao Framework
 
Django deploy - Como servir aplicações Django em produção
Django deploy - Como servir aplicações Django em produçãoDjango deploy - Como servir aplicações Django em produção
Django deploy - Como servir aplicações Django em produção
 
Instalando o WordPress local em qualquer sistema operacional - Anyssa Ferreir...
Instalando o WordPress local em qualquer sistema operacional - Anyssa Ferreir...Instalando o WordPress local em qualquer sistema operacional - Anyssa Ferreir...
Instalando o WordPress local em qualquer sistema operacional - Anyssa Ferreir...
 
Mini curso de django
Mini curso de djangoMini curso de django
Mini curso de django
 
Javascript por debaixo dos panos
Javascript por debaixo dos panosJavascript por debaixo dos panos
Javascript por debaixo dos panos
 

Destaque

Tudo o que você precisa saber sobre o php7
Tudo o que você precisa saber sobre o php7Tudo o que você precisa saber sobre o php7
Tudo o que você precisa saber sobre o php7Er Galvão Abbott
 
Visibilidade e Diagrama de Classe de Projeto na UML
Visibilidade e Diagrama de Classe de Projeto na UMLVisibilidade e Diagrama de Classe de Projeto na UML
Visibilidade e Diagrama de Classe de Projeto na UMLufpb
 
Fundamentos de algoritmos e programação - Fortran
Fundamentos de algoritmos e programação - FortranFundamentos de algoritmos e programação - Fortran
Fundamentos de algoritmos e programação - FortranKennedy Morais Fernandes
 
Diagrama de classe
Diagrama de classeDiagrama de classe
Diagrama de classeSuissa
 
Memorias de um sargento
Memorias de um sargentoMemorias de um sargento
Memorias de um sargentoVitorCazelatto
 
1 Aula De Dreamweaver
1 Aula De Dreamweaver1 Aula De Dreamweaver
1 Aula De DreamweaverProfe Luiz
 
Diagrama de Classe: Relacionamento de Composição
Diagrama de Classe: Relacionamento de ComposiçãoDiagrama de Classe: Relacionamento de Composição
Diagrama de Classe: Relacionamento de ComposiçãomarcusNOGUEIRA
 

Destaque (7)

Tudo o que você precisa saber sobre o php7
Tudo o que você precisa saber sobre o php7Tudo o que você precisa saber sobre o php7
Tudo o que você precisa saber sobre o php7
 
Visibilidade e Diagrama de Classe de Projeto na UML
Visibilidade e Diagrama de Classe de Projeto na UMLVisibilidade e Diagrama de Classe de Projeto na UML
Visibilidade e Diagrama de Classe de Projeto na UML
 
Fundamentos de algoritmos e programação - Fortran
Fundamentos de algoritmos e programação - FortranFundamentos de algoritmos e programação - Fortran
Fundamentos de algoritmos e programação - Fortran
 
Diagrama de classe
Diagrama de classeDiagrama de classe
Diagrama de classe
 
Memorias de um sargento
Memorias de um sargentoMemorias de um sargento
Memorias de um sargento
 
1 Aula De Dreamweaver
1 Aula De Dreamweaver1 Aula De Dreamweaver
1 Aula De Dreamweaver
 
Diagrama de Classe: Relacionamento de Composição
Diagrama de Classe: Relacionamento de ComposiçãoDiagrama de Classe: Relacionamento de Composição
Diagrama de Classe: Relacionamento de Composição
 

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

Php7 esta chgando! O que você precisa saber
Php7 esta chgando! O que você precisa saberPhp7 esta chgando! O que você precisa saber
Php7 esta chgando! O que você precisa saberEr Galvão Abbott
 
Desenvolvendo aplicações com ZF2
Desenvolvendo aplicações com ZF2Desenvolvendo aplicações com ZF2
Desenvolvendo aplicações com ZF2Er Galvão Abbott
 
Ligação do Flex a um backend LAMP usando AMFPHP
Ligação do Flex a um backend LAMP usando AMFPHPLigação do Flex a um backend LAMP usando AMFPHP
Ligação do Flex a um backend LAMP usando AMFPHPelliando dias
 
2290494 integrando-flex-com-php
2290494 integrando-flex-com-php2290494 integrando-flex-com-php
2290494 integrando-flex-com-phpBrenno Abreu
 
DRYing the Skeleton: Reducing code repetition in ZF2
DRYing the Skeleton: Reducing code repetition in ZF2DRYing the Skeleton: Reducing code repetition in ZF2
DRYing the Skeleton: Reducing code repetition in ZF2Er Galvão Abbott
 
15 coisas sobre php para saber antes de morrer
15 coisas sobre php para saber antes de morrer15 coisas sobre php para saber antes de morrer
15 coisas sobre php para saber antes de morrerMichele Silva
 
Php Test Fest PHPMS, Maio 2008
Php Test Fest PHPMS, Maio 2008Php Test Fest PHPMS, Maio 2008
Php Test Fest PHPMS, Maio 2008zehzinho
 
Web: funcionamento, evolução e mercado
Web: funcionamento, evolução e mercadoWeb: funcionamento, evolução e mercado
Web: funcionamento, evolução e mercadoEr Galvão Abbott
 
Desenvolvimento de APIs REST Multiplataforma com ASP.NET Core - Setembro-2019
Desenvolvimento de APIs REST Multiplataforma com ASP.NET Core - Setembro-2019Desenvolvimento de APIs REST Multiplataforma com ASP.NET Core - Setembro-2019
Desenvolvimento de APIs REST Multiplataforma com ASP.NET Core - Setembro-2019Renato Groff
 
O que esperar do Zend Framework 3
O que esperar do Zend Framework 3O que esperar do Zend Framework 3
O que esperar do Zend Framework 3Flávio Lisboa
 
Criptomoedas e .NET - Consumindo algumas APIs existentes - Julho-2017
Criptomoedas e .NET - Consumindo algumas APIs existentes - Julho-2017Criptomoedas e .NET - Consumindo algumas APIs existentes - Julho-2017
Criptomoedas e .NET - Consumindo algumas APIs existentes - Julho-2017Renato Groff
 
O futuro do elephante: as promessas do php para 2019
O futuro do elephante: as promessas do php para 2019O futuro do elephante: as promessas do php para 2019
O futuro do elephante: as promessas do php para 2019Cassio Santos
 
Alta Performance de Aplicações Web em PHP - Nginx
Alta Performance de Aplicações Web em PHP - NginxAlta Performance de Aplicações Web em PHP - Nginx
Alta Performance de Aplicações Web em PHP - NginxThiago Paes
 
Desenvolvendo aplicações web com python e web2py
Desenvolvendo aplicações web com python e web2pyDesenvolvendo aplicações web com python e web2py
Desenvolvendo aplicações web com python e web2pyGilson Filho
 

Semelhante a Otimizando a execução de código-fonte PHP (20)

Php7 esta chgando! O que você precisa saber
Php7 esta chgando! O que você precisa saberPhp7 esta chgando! O que você precisa saber
Php7 esta chgando! O que você precisa saber
 
Desenvolvendo aplicações com ZF2
Desenvolvendo aplicações com ZF2Desenvolvendo aplicações com ZF2
Desenvolvendo aplicações com ZF2
 
Apresentacao frameworks
Apresentacao frameworksApresentacao frameworks
Apresentacao frameworks
 
PHP: Evolução
PHP: EvoluçãoPHP: Evolução
PHP: Evolução
 
Unbreakeable php
Unbreakeable phpUnbreakeable php
Unbreakeable php
 
Ligação do Flex a um backend LAMP usando AMFPHP
Ligação do Flex a um backend LAMP usando AMFPHPLigação do Flex a um backend LAMP usando AMFPHP
Ligação do Flex a um backend LAMP usando AMFPHP
 
2290494 integrando-flex-com-php
2290494 integrando-flex-com-php2290494 integrando-flex-com-php
2290494 integrando-flex-com-php
 
DRYing the Skeleton: Reducing code repetition in ZF2
DRYing the Skeleton: Reducing code repetition in ZF2DRYing the Skeleton: Reducing code repetition in ZF2
DRYing the Skeleton: Reducing code repetition in ZF2
 
15 coisas sobre php para saber antes de morrer
15 coisas sobre php para saber antes de morrer15 coisas sobre php para saber antes de morrer
15 coisas sobre php para saber antes de morrer
 
Php Test Fest PHPMS, Maio 2008
Php Test Fest PHPMS, Maio 2008Php Test Fest PHPMS, Maio 2008
Php Test Fest PHPMS, Maio 2008
 
Web: funcionamento, evolução e mercado
Web: funcionamento, evolução e mercadoWeb: funcionamento, evolução e mercado
Web: funcionamento, evolução e mercado
 
Novidades do PHP 5.3 e 6
Novidades do PHP 5.3 e 6Novidades do PHP 5.3 e 6
Novidades do PHP 5.3 e 6
 
Desenvolvimento de APIs REST Multiplataforma com ASP.NET Core - Setembro-2019
Desenvolvimento de APIs REST Multiplataforma com ASP.NET Core - Setembro-2019Desenvolvimento de APIs REST Multiplataforma com ASP.NET Core - Setembro-2019
Desenvolvimento de APIs REST Multiplataforma com ASP.NET Core - Setembro-2019
 
PHP Tools for Fast coding
PHP Tools for Fast codingPHP Tools for Fast coding
PHP Tools for Fast coding
 
O que esperar do Zend Framework 3
O que esperar do Zend Framework 3O que esperar do Zend Framework 3
O que esperar do Zend Framework 3
 
Sapo Sessions PHP
Sapo Sessions PHPSapo Sessions PHP
Sapo Sessions PHP
 
Criptomoedas e .NET - Consumindo algumas APIs existentes - Julho-2017
Criptomoedas e .NET - Consumindo algumas APIs existentes - Julho-2017Criptomoedas e .NET - Consumindo algumas APIs existentes - Julho-2017
Criptomoedas e .NET - Consumindo algumas APIs existentes - Julho-2017
 
O futuro do elephante: as promessas do php para 2019
O futuro do elephante: as promessas do php para 2019O futuro do elephante: as promessas do php para 2019
O futuro do elephante: as promessas do php para 2019
 
Alta Performance de Aplicações Web em PHP - Nginx
Alta Performance de Aplicações Web em PHP - NginxAlta Performance de Aplicações Web em PHP - Nginx
Alta Performance de Aplicações Web em PHP - Nginx
 
Desenvolvendo aplicações web com python e web2py
Desenvolvendo aplicações web com python e web2pyDesenvolvendo aplicações web com python e web2py
Desenvolvendo aplicações web com python e web2py
 

Mais de Er Galvão Abbott

ABRAPHP: Conquistas e Realizações - 2012-2014
ABRAPHP: Conquistas e Realizações - 2012-2014ABRAPHP: Conquistas e Realizações - 2012-2014
ABRAPHP: Conquistas e Realizações - 2012-2014Er Galvão Abbott
 
Implementing security routines with zf2
Implementing security routines with zf2Implementing security routines with zf2
Implementing security routines with zf2Er Galvão Abbott
 
ZF2 Menor, melhor e mais poderoso
ZF2 Menor, melhor e mais poderosoZF2 Menor, melhor e mais poderoso
ZF2 Menor, melhor e mais poderosoEr Galvão Abbott
 
Implementando rotinas de geolocalização
Implementando rotinas de geolocalizaçãoImplementando rotinas de geolocalização
Implementando rotinas de geolocalizaçãoEr Galvão Abbott
 
OSS, Comunidade, Eventos e como sua empresa ganha com isso
OSS, Comunidade, Eventos e como sua empresa ganha com issoOSS, Comunidade, Eventos e como sua empresa ganha com isso
OSS, Comunidade, Eventos e como sua empresa ganha com issoEr Galvão Abbott
 
OWASP: O que, Por que e Como
OWASP: O que, Por que e ComoOWASP: O que, Por que e Como
OWASP: O que, Por que e ComoEr Galvão Abbott
 
Além da autenticação: Permissões de acesso com Zend Framework
Além da autenticação: Permissões de acesso com Zend FrameworkAlém da autenticação: Permissões de acesso com Zend Framework
Além da autenticação: Permissões de acesso com Zend FrameworkEr Galvão Abbott
 
Proposta de Boas Práticas e Padrões de Desenvolvimento Web
Proposta de Boas Práticas e Padrões de Desenvolvimento WebProposta de Boas Práticas e Padrões de Desenvolvimento Web
Proposta de Boas Práticas e Padrões de Desenvolvimento WebEr Galvão Abbott
 
Preto, Branco e as Sombras de Cinza
Preto, Branco e as Sombras de CinzaPreto, Branco e as Sombras de Cinza
Preto, Branco e as Sombras de CinzaEr Galvão Abbott
 
Implementando Segurança Em Sua Aplicação PHP
Implementando Segurança Em Sua Aplicação PHPImplementando Segurança Em Sua Aplicação PHP
Implementando Segurança Em Sua Aplicação PHPEr Galvão Abbott
 
Prevenindo XSS: Execute apenas o SEU código
Prevenindo XSS: Execute apenas o SEU códigoPrevenindo XSS: Execute apenas o SEU código
Prevenindo XSS: Execute apenas o SEU códigoEr Galvão Abbott
 
PHP e Segurança - Uma união possível
PHP e Segurança - Uma união possívelPHP e Segurança - Uma união possível
PHP e Segurança - Uma união possívelEr Galvão Abbott
 

Mais de Er Galvão Abbott (17)

Segurança PHP em 2016
Segurança PHP em 2016Segurança PHP em 2016
Segurança PHP em 2016
 
PHP e Open Source
PHP e Open SourcePHP e Open Source
PHP e Open Source
 
ABRAPHP: Conquistas e Realizações - 2012-2014
ABRAPHP: Conquistas e Realizações - 2012-2014ABRAPHP: Conquistas e Realizações - 2012-2014
ABRAPHP: Conquistas e Realizações - 2012-2014
 
Implementing security routines with zf2
Implementing security routines with zf2Implementing security routines with zf2
Implementing security routines with zf2
 
ZF2 Menor, melhor e mais poderoso
ZF2 Menor, melhor e mais poderosoZF2 Menor, melhor e mais poderoso
ZF2 Menor, melhor e mais poderoso
 
Implementando rotinas de geolocalização
Implementando rotinas de geolocalizaçãoImplementando rotinas de geolocalização
Implementando rotinas de geolocalização
 
OSS, Comunidade, Eventos e como sua empresa ganha com isso
OSS, Comunidade, Eventos e como sua empresa ganha com issoOSS, Comunidade, Eventos e como sua empresa ganha com isso
OSS, Comunidade, Eventos e como sua empresa ganha com isso
 
OWASP: O que, Por que e Como
OWASP: O que, Por que e ComoOWASP: O que, Por que e Como
OWASP: O que, Por que e Como
 
Além da autenticação: Permissões de acesso com Zend Framework
Além da autenticação: Permissões de acesso com Zend FrameworkAlém da autenticação: Permissões de acesso com Zend Framework
Além da autenticação: Permissões de acesso com Zend Framework
 
Proposta de Boas Práticas e Padrões de Desenvolvimento Web
Proposta de Boas Práticas e Padrões de Desenvolvimento WebProposta de Boas Práticas e Padrões de Desenvolvimento Web
Proposta de Boas Práticas e Padrões de Desenvolvimento Web
 
PHPBR TestFest
PHPBR TestFestPHPBR TestFest
PHPBR TestFest
 
Preto, Branco e as Sombras de Cinza
Preto, Branco e as Sombras de CinzaPreto, Branco e as Sombras de Cinza
Preto, Branco e as Sombras de Cinza
 
Top 10 OWASP com PHP
Top 10 OWASP com PHPTop 10 OWASP com PHP
Top 10 OWASP com PHP
 
Aplicacoes Web Com AJAX
Aplicacoes Web Com AJAXAplicacoes Web Com AJAX
Aplicacoes Web Com AJAX
 
Implementando Segurança Em Sua Aplicação PHP
Implementando Segurança Em Sua Aplicação PHPImplementando Segurança Em Sua Aplicação PHP
Implementando Segurança Em Sua Aplicação PHP
 
Prevenindo XSS: Execute apenas o SEU código
Prevenindo XSS: Execute apenas o SEU códigoPrevenindo XSS: Execute apenas o SEU código
Prevenindo XSS: Execute apenas o SEU código
 
PHP e Segurança - Uma união possível
PHP e Segurança - Uma união possívelPHP e Segurança - Uma união possível
PHP e Segurança - Uma união possível
 

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

  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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