tdc2016sp - depurando aplicações php like a boss
TRANSCRIPT
![Page 1: TDC2016SP - Depurando Aplicações PHP Like a BOSS](https://reader030.vdocuments.net/reader030/viewer/2022020213/58cfd3261a28ab13238b4927/html5/thumbnails/1.jpg)
DepurandoaplicaçõesPHPlike aBOSS
ThiagoRodriguesEng.deSoftwareSr.CI&T- PHPSP
![Page 2: TDC2016SP - Depurando Aplicações PHP Like a BOSS](https://reader030.vdocuments.net/reader030/viewer/2022020213/58cfd3261a28ab13238b4927/html5/thumbnails/2.jpg)
ThiagoRodrigues
BacharelemSistemasdeInformaçãopelaUniversidadedoEstadodeMinasGerais(UEMG);
Engenheiro deSoftwareSêniornaCI&T
Programador PHPhá11anos;
EvangelistaPHPSP
Entusiastadosoftwarelivre
Gammer
![Page 3: TDC2016SP - Depurando Aplicações PHP Like a BOSS](https://reader030.vdocuments.net/reader030/viewer/2022020213/58cfd3261a28ab13238b4927/html5/thumbnails/3.jpg)
Depuração- Oqueé?
Definiçãoformal:
Depuração (eminglês:debugging,debug)éoprocessodeencontrarereduzirdefeitosnumaplicativodesoftwareoumesmoemhardware.[..]
https://pt.wikipedia.org/wiki/Depuração
• diariamentedespendemos esforçoconsiderável
• éumprocessoanalítico
• éumprocesso repetitivo
• éincremental(dividir paraconquistar)
• podehavermuitapressãoenvolvida
![Page 4: TDC2016SP - Depurando Aplicações PHP Like a BOSS](https://reader030.vdocuments.net/reader030/viewer/2022020213/58cfd3261a28ab13238b4927/html5/thumbnails/4.jpg)
Depuração- Habilidadenecessária
Obomdesenvolvedorécapazdedepurareresolverproblemas com:
• tranquilidade
• efetividade
• produtividade
• clareza
• assertividade
![Page 5: TDC2016SP - Depurando Aplicações PHP Like a BOSS](https://reader030.vdocuments.net/reader030/viewer/2022020213/58cfd3261a28ab13238b4927/html5/thumbnails/5.jpg)
Depuração- domíniodeferramentas
Paraexecutarbemqualquer
trabalhoéfundamental dominar
ferramentasqueauxiliamna
execuçãodomesmo.
Ahabilidadedecriareusar
ferramentasfoieaindaé
fundamentalparaespéciehumana.
![Page 6: TDC2016SP - Depurando Aplicações PHP Like a BOSS](https://reader030.vdocuments.net/reader030/viewer/2022020213/58cfd3261a28ab13238b4927/html5/thumbnails/6.jpg)
QuaisferramentasvocêsusamparadepuraraplicaçõesPHP?
![Page 7: TDC2016SP - Depurando Aplicações PHP Like a BOSS](https://reader030.vdocuments.net/reader030/viewer/2022020213/58cfd3261a28ab13238b4927/html5/thumbnails/7.jpg)
Ferramentasdedepuração- Nãoexistebaladeprata
Diferentesproblemasdemandam ferramentasdiferentes.
Éfundamentalconhecerdiversasferramentas,entenderquandousarecomousar.
![Page 8: TDC2016SP - Depurando Aplicações PHP Like a BOSS](https://reader030.vdocuments.net/reader030/viewer/2022020213/58cfd3261a28ab13238b4927/html5/thumbnails/8.jpg)
Bê-a-bá dadepuraçãodeaplicaçõesPHP
<?php echo 'Hello world!';
![Page 9: TDC2016SP - Depurando Aplicações PHP Like a BOSS](https://reader030.vdocuments.net/reader030/viewer/2022020213/58cfd3261a28ab13238b4927/html5/thumbnails/9.jpg)
Bê-a-bá dadepuraçãodeaplicaçõesPHP
<?php$vetor = array(
'frutas' => array('banana', 'maça', 'laranja'
),'vegetais' => array(
'alface', 'rúcula', 'couve'),
);
echo $vetor;
![Page 10: TDC2016SP - Depurando Aplicações PHP Like a BOSS](https://reader030.vdocuments.net/reader030/viewer/2022020213/58cfd3261a28ab13238b4927/html5/thumbnails/10.jpg)
Bê-a-bá dadepuraçãodeaplicaçõesPHP
<?php$vetor = array(
'frutas' => array('banana', 'maça', 'laranja'
),'vegetais' => array(
'alface', 'rúcula', 'couve'),
);
print_r($vetor);
![Page 11: TDC2016SP - Depurando Aplicações PHP Like a BOSS](https://reader030.vdocuments.net/reader030/viewer/2022020213/58cfd3261a28ab13238b4927/html5/thumbnails/11.jpg)
Bê-a-bá dadepuraçãodeaplicaçõesPHP
<?php$vetor = array(
'frutas' => array('banana', 'maça', 'laranja'
),'vegetais' => array(
'alface', 'rúcula', 'couve'),
);
echo '<pre>';print_r($vetor);
![Page 12: TDC2016SP - Depurando Aplicações PHP Like a BOSS](https://reader030.vdocuments.net/reader030/viewer/2022020213/58cfd3261a28ab13238b4927/html5/thumbnails/12.jpg)
Bê-a-bá dadepuraçãodeaplicaçõesPHP
<?php$vetor = array(
'',NULL,'laranja',123, '123', 1.0,'1.0',
);echo '<pre>';print_r($vetor);
![Page 13: TDC2016SP - Depurando Aplicações PHP Like a BOSS](https://reader030.vdocuments.net/reader030/viewer/2022020213/58cfd3261a28ab13238b4927/html5/thumbnails/13.jpg)
Bê-a-bá dadepuraçãodeaplicaçõesPHP
<?php$vetor = array(
'',NULL,'laranja',123,'123',1.0,'1.0',
);echo '<pre>';var_dump($vetor);
![Page 14: TDC2016SP - Depurando Aplicações PHP Like a BOSS](https://reader030.vdocuments.net/reader030/viewer/2022020213/58cfd3261a28ab13238b4927/html5/thumbnails/14.jpg)
Bê-a-bá dadepuraçãodeaplicaçõesPHP
<?php$vetor = array(
// elementos);ob_start();echo '<pre>';var_dump($vetor);$info = ob_get_clean();file_put_contents('/tmp/debug.html', $info);echo 'Oi ;)';
![Page 15: TDC2016SP - Depurando Aplicações PHP Like a BOSS](https://reader030.vdocuments.net/reader030/viewer/2022020213/58cfd3261a28ab13238b4927/html5/thumbnails/15.jpg)
Problemascomunsdaabordagem"imprimirnatela"
• Esforçorepetitivo
• Nãoexibetodoocontexto devariáveis
• Dificultaoentendimentodeestruturasdedadoscomplexas
• Requeraquebradefuncionalidadeparatestesemprodução
• Vocêpodesedaraesseluxo?Oqueosusuáriosvãopensar?
• Desperdiça-semuitotempotentando identificarfluxoscomplexos imprimindovalores
seguidodafunçãoexit()oudie().
• Devezemquandoalgumdessesecho/print_r/var_dump sãoesquecidos,acarretandona
quebradefuncionalidadesoudolayout.
• Identificaçãodeproblemasdeperformanceéextremamenteonerosa
![Page 16: TDC2016SP - Depurando Aplicações PHP Like a BOSS](https://reader030.vdocuments.net/reader030/viewer/2022020213/58cfd3261a28ab13238b4927/html5/thumbnails/16.jpg)
EnsinofundamentaldadepuraçãodeaplicaçõesPHP
Ajustarphp.ini paraexibirqualquer tipodeerro:
error_reporting = E_ALLdisplay_errors = On # Desligar em PROD.
Verificarlogsdoservidorwebenquantoasrequisiçõesestãoocorrendo (stream):
sudo tail -f /var/log/apache2/error.log [outro/file]
![Page 17: TDC2016SP - Depurando Aplicações PHP Like a BOSS](https://reader030.vdocuments.net/reader030/viewer/2022020213/58cfd3261a28ab13238b4927/html5/thumbnails/17.jpg)
Tiposdedepuração
DebuggingConecta-seaosoftwareecontrolaofluxodeexecuçãodaaplicaçãoeobtémseuestado.
TracingImprimeinformaçõesemmomentoschaves,taiscomoapilhadeexecuçãodaaplicação.
ProfilingColetaemensuradiversosdadosestatísticosdaaplicação,taiscomotempodeexecução,memóriautilizada,quantidadesdechamadas,etc.
![Page 18: TDC2016SP - Depurando Aplicações PHP Like a BOSS](https://reader030.vdocuments.net/reader030/viewer/2022020213/58cfd3261a28ab13238b4927/html5/thumbnails/18.jpg)
Xdebug
Amaispoderosa ferramentadedepuraçãoPHP.
Principaisfuncionalidades:
• Debugging
• Tracing
• Profiling
• Proteçãocontraloopinfinito
• Deixaovar_dump bonito
![Page 19: TDC2016SP - Depurando Aplicações PHP Like a BOSS](https://reader030.vdocuments.net/reader030/viewer/2022020213/58cfd3261a28ab13238b4927/html5/thumbnails/19.jpg)
Xdebug - Instalação
NoLinux:
sudo apt-get install php5-xdebug
NoMac(usandobrew):
sudo brew install php56-xdebug
![Page 20: TDC2016SP - Depurando Aplicações PHP Like a BOSS](https://reader030.vdocuments.net/reader030/viewer/2022020213/58cfd3261a28ab13238b4927/html5/thumbnails/20.jpg)
Xdebug - Tracing
![Page 21: TDC2016SP - Depurando Aplicações PHP Like a BOSS](https://reader030.vdocuments.net/reader030/viewer/2022020213/58cfd3261a28ab13238b4927/html5/thumbnails/21.jpg)
Xdebug - "embeleza"ovar_dump
![Page 22: TDC2016SP - Depurando Aplicações PHP Like a BOSS](https://reader030.vdocuments.net/reader030/viewer/2022020213/58cfd3261a28ab13238b4927/html5/thumbnails/22.jpg)
Xdebug - Configurandodepuraçãoremota
Noservidorweb- xdebug.ini:xdebug.remote_connect_back=1xdebug.remote_enable=1
TúnelSSH(necessáriosomenteparaaplicaçõesremotas)ssh -R 9000:localhost:9000 [email protected]
![Page 23: TDC2016SP - Depurando Aplicações PHP Like a BOSS](https://reader030.vdocuments.net/reader030/viewer/2022020213/58cfd3261a28ab13238b4927/html5/thumbnails/23.jpg)
Xdebug - ConfigurandodepuraçãoremotanoPHPStorm
1) AbraajanelaPreferences enavegueatéPHP>Servers.2)PreenchaoName,Host ePorta doservidorPHP.3) Seforumservidorremoto,habilite"Usepathmappings" emapeiearaizdoprojeto localcomocaminhoabsoluto doprojetonoservidorremoto.4) CliqueemOK parasalvarefecharajanela.
![Page 24: TDC2016SP - Depurando Aplicações PHP Like a BOSS](https://reader030.vdocuments.net/reader030/viewer/2022020213/58cfd3261a28ab13238b4927/html5/thumbnails/24.jpg)
Xdebug - ConfigurandodepuraçãoremotanoPHPStorm
1) VáatéomenuRun ecliqueemEdit Configurations.2)Cliquenobotão+ edepoisemPHPWebApplication.3) PreenchaocampoName;nocampoServer selecioneoservidorcriadonoslideanteriorecoloque/ emStartURL.4) CliqueemOK parasalvarefecharajanela.
![Page 25: TDC2016SP - Depurando Aplicações PHP Like a BOSS](https://reader030.vdocuments.net/reader030/viewer/2022020213/58cfd3261a28ab13238b4927/html5/thumbnails/25.jpg)
Xdebug - IniciandoadepuraçãonoPHPStorm
Seadepuraçãoforremota,criarotúnelSSHantes.
1) VáatéomenuRun ecliqueemDebug'nome'.2)Seráabertoumajaneladonavegador.
![Page 26: TDC2016SP - Depurando Aplicações PHP Like a BOSS](https://reader030.vdocuments.net/reader030/viewer/2022020213/58cfd3261a28ab13238b4927/html5/thumbnails/26.jpg)
Xdebug - TeladedepuraçãonoPHPStorm
![Page 27: TDC2016SP - Depurando Aplicações PHP Like a BOSS](https://reader030.vdocuments.net/reader030/viewer/2022020213/58cfd3261a28ab13238b4927/html5/thumbnails/27.jpg)
Xdebug - DepuraçãonoPHPStorm
![Page 28: TDC2016SP - Depurando Aplicações PHP Like a BOSS](https://reader030.vdocuments.net/reader030/viewer/2022020213/58cfd3261a28ab13238b4927/html5/thumbnails/28.jpg)
Xdebug - Configurandoprofiling
xdebug.ini
xdebug.profiler_enable_trigger=1xdebug.profiler_enable=1xdebug.profiler_output_dir="/var/www/phpsp"
Visiteosite,notequeelecriaráalgunsarquivoscachegrind.out napastaespecificada.
NoPHPStorm:AcesseTools>Analyze Xdebug ProfilerSnapshot eselecionealgumarquivocachegrind.out.
![Page 29: TDC2016SP - Depurando Aplicações PHP Like a BOSS](https://reader030.vdocuments.net/reader030/viewer/2022020213/58cfd3261a28ab13238b4927/html5/thumbnails/29.jpg)
Xdebug - Analisandoprofiling noPHPStorm
![Page 30: TDC2016SP - Depurando Aplicações PHP Like a BOSS](https://reader030.vdocuments.net/reader030/viewer/2022020213/58cfd3261a28ab13238b4927/html5/thumbnails/30.jpg)
Xdebug - Analisandoprofiling noKCachegrind
![Page 31: TDC2016SP - Depurando Aplicações PHP Like a BOSS](https://reader030.vdocuments.net/reader030/viewer/2022020213/58cfd3261a28ab13238b4927/html5/thumbnails/31.jpg)
XHProf
Ferramentaparaprofiling.
![Page 32: TDC2016SP - Depurando Aplicações PHP Like a BOSS](https://reader030.vdocuments.net/reader030/viewer/2022020213/58cfd3261a28ab13238b4927/html5/thumbnails/32.jpg)
XHProf - Gráficodechamadas
![Page 33: TDC2016SP - Depurando Aplicações PHP Like a BOSS](https://reader030.vdocuments.net/reader030/viewer/2022020213/58cfd3261a28ab13238b4927/html5/thumbnails/33.jpg)
Webprofiler doframework
![Page 34: TDC2016SP - Depurando Aplicações PHP Like a BOSS](https://reader030.vdocuments.net/reader030/viewer/2022020213/58cfd3261a28ab13238b4927/html5/thumbnails/34.jpg)
Blackfire - outraferramentadeprofiling
![Page 35: TDC2016SP - Depurando Aplicações PHP Like a BOSS](https://reader030.vdocuments.net/reader030/viewer/2022020213/58cfd3261a28ab13238b4927/html5/thumbnails/35.jpg)
Conclusão
Precisachecarumaestruturadedadosbásica? var_dump
Precisainvestigarofluxodeexecução? Xdebug
Precisainvestigarumaestruturadedadoscomplexa? Xdebug
Precisamelhoraraperformancedeumapágina? Utilizeumaferramentadeprofiling
antesdesairatirandoparatodolado.
Invistaseutempoemferramentasdedepuraçãoparaganharprodutividade.