SlideShare uma empresa Scribd logo
1 de 96
Baixar para ler offline
php
Jedi
 Boas práticas e
alta performance



    Felipe Ribeiro
    http://feliperibeiro.com
    felipernb@gmail.com
quot;PHP is not about purity in CS principles or
   architecture; it is about solving the ugly web
 problem with an admittedly ugly, but extremely
  functional and convenient solution. If you are
looking for purity, you are in the wrong boat. Get
    out now before you get hit by a wet cat!quot; -
                   Rasmus Lerdorf
Beleza nem sempre é
        fundamental
Mas um código
 bem escrito faz
toda a diferença!
Boas práticas
Evite o
spaghetti
Divida em
 camadas
• Para
     separar a aparência da lógica de
 negócio

• Smarty


• Savant,   TinyButStrong, PHPTAL, XSLT, ...
Siga um
 padrão de
codificação
exemplo, as convenções do Java:
• Por


• CamelCase


• Classescomeçam com maiúscula:
 FrontController, DatabaseConnection,
 RestClient

• Variáveis
          (atributos), funções (métodos)
 começam com minúscula: $user,
 $this->name, print(), $this->getName()
• Constantes,toda em maiúscula com
 underline para separar palavras:
 DATABASE_LOGIN, BASE_DIR
• Existem   diversas convenções para PHP

• PEAR  Coding Standards
 http://pear.php.net/manual/en/
 standards.php

• Zend  Framework Coding Standard for PHP
 http://framework.zend.com/manual/en/
 coding-standard.html
Use o PEAR
Use o PEAR
  PHP
  Extension and
  Application
  Repository
• Pacotes
        escritos por membros ativos da
 comunidade PHP

• Tudotestado por um time exigente de
 controle de qualidade.

• Gerenciamento   “a la apt-get”:
 Ex.:
 pear install Log
 pear upgrade PHPUnit
 pear uninstall Text_CAPTCHA
Não reinvente
a roda
• Crie
     do zero apenas o que é específico da
 sua aplicação

• Reuso   de código facilita a manutenção

• Códigosde fontes confiáveis como PEAR e
 Zend Framework são bem testados antes
 de serem disponibilizados.
Diga não ao
Ctrl + C, Ctrl + V
• Se
   o mesmo código precisa ser usado em
 mais de um lugar, não copie!

• Encapsule   numa função/método
Frameworks
• Zend   Framework

• CakePHP


• Symfony


• Prado


• CodeIgniter
• Ajuda   a separar camadas

• Padrões   de codificação

• Reaproveitamento   de código

• Aprecie     com moderação!*
Escolha bons nomes
• Nomes relevantes ajudam no entendimento
 do código

           com nomes como: $xpto, $foo,
• Variáveis
 $bar, etc... não dizem nada sobre o que é
 guardado lá (assim como funções, classes
 e métodos)
Comente o
   código
Comente o
            código

Mas comentários não
disfarçam códigos
mal escritos
quot;Don't comment bad
  code - rewrite it.quot;
 Brian W. Kernighan
 and P. J. Plaugher
Keep It Simple,
Stupid!
Keep It Simple,
Stupid!
       Evite qualquer
        complexidade
       desnecessária
Utilize padrões
para se
comunicar
Em alguns
lugares do
oriente
médio, esse
gesto...
seria interpretado assim...




Então é melhor não
          inventar!
XML
XML
JSON
JSON
Quebre grandes
blocos de código
em blocos menores
Quebre grandes
blocos de código
em blocos menores
  Classes e métodos
muito grandes devem
      ser refatorados
Não use Windows
“PHP Windows
developers are
second-class
citizens” –
Rasmus Lerdorf
• Windows não é a plataforma ideal para
 desenvolvedores

• Não   tem um terminal poderoso

• Não vem “de fábrica” com compiladores
 úteis para nós, como o gcc

• Nãoreproduz o ambiente de produção
 mais comum em PHP, o LAMP
• Nãotem um gerenciador de pacotes que
 permita atualizar e adicionar/remover
 módulos do PHP de maneira trivial.

• Não
    tem um bom gerenciamento de
 memória.

• Dêuma chance ao Linux ou algum sabor
 de Unix (FreeBSD, Mac OS X, etc...)
Tratamento
   de erros
Tratamento
            de erros
Desenvolva
no modo
E_STRICT
Tratamento
            de erros
Desenvolva
no modo          Use
E_STRICT Exceptions
           e trate-as
display_errors = off

Afinal o usuário não
  vai depurar o seu
            código
Não use o operador
    @ para suprimir
  erros. Atrapalha o
    debug e deixa a
execução mais lenta
Não confie
no usuário
Não confie
no usuário

       filtre toda
       entrada
e escape
toda saída
Use o
Twitter para
    algo útil
Crie um perfil
privado para a
sua aplicação
Crie um perfil
privado para a
sua aplicação
   onde os únicos
  followers são os
  desenvolvedores
Utilizando a API,
faça com que sua
aplicação dê uma
“twittada” a cada
erro
Performance e
Escalabilidade
Performance
Performance

a habilidade que uma
aplicação tem de atingir um
objetivo, como por exemplo
responder no menor tempo
possível
Escalabilidade
Escalabilidade

a habilidade de uma aplicação
manter a performance quando
a carga de trabalho aumenta.
PHP não
é tão
rápido...
Porém sua
   arquitetura
share-nothing
   simplifica a
escalabilidade
E PHP
dificilmente
é o gargalo
A maior parte do
  tempo é gasto no
 banco de dados ou
com o carregamento
       do front-end
Sempre dá para
espremer e melhorar
Xdebug
arrebenta no
profiling!
• Instale   a extensão Xdebug

        a opção xdebug.profiler_enable
• Habilite
 caso queira que toda execução gere o log

• Ou a opção
 xdebug.profiler_enable_trigger para que
 o log só seja gerado quando você passar
 ?XDEBUG_PROFILE na URL
• Rode   o script que você quer analisar

• Abra
     o log gerado pelo Xdebug no
 KCacheGrind caso use Linux, ou no
 WebGrind em qualquer outra plataforma.
KCacheGrind
http://code.google.com/p/webgrind/
• xdebug_memory_usage(   ) diz quanto de
 memória o script está usando no momento
 da chamada

• xdebug_peak_memory_usage(  ) diz qual o
 valor máximo de memória que foi usada
 durante a execução
Testes
de carga
Testes
de carga

ApacheBench (ab)
Siege - www.joedog.org
Macintosh:~ felipe$ ab -c 10 -t 30 -b -k 'http://shoprizer.localhost/'
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking shoprizer.localhost (be patient)
Finished 4379 requests



Server Software:        Apache/2.0.59
Server Hostname:        shoprizer.localhost
Server Port:            80

Document Path:          /
Document Length:        22320 bytes

Concurrency Level:      10
Time taken for tests:   30.010 seconds
Complete requests:      4379
Failed requests:        0
Write errors:           0
Total transferred:      99436344 bytes
HTML transferred:       97806240 bytes
Requests per second:    145.92 [#/sec] (mean)
Time per request:       68.532 [ms] (mean)
Time per request:       6.853 [ms] (mean, across all concurrent requests)
Transfer rate:          3235.74 [Kbytes/sec] received
Macintosh:~ felipe$ siege -b -t30s 'http://shoprizer.localhost/'
** SIEGE 2.67
** Preparing 10 concurrent users for battle.
The server is now under siege...
Lifting the server siege...       done.
Transactions:		          4909 hits
Availability:		        100.00 %
Elapsed time:		         29.84 secs
Data transferred:	        104.49 MB
Response time:	 	           0.06 secs
Transaction rate:	        164.51 trans/sec
Throughput:	 	           3.50 MB/sec
Concurrency:	 	          9.93
Successful transactions:         4909
Failed transactions:	              0
Longest transaction:	           2.28
Shortest transaction:	          0.00
Caching
APC
  Faz cache do opcode do
   PHP. Evitando que seja
       recompilado a cada
                execução
APC
      Faz cache do opcode do
       PHP. Evitando que seja
           recompilado a cada
                    execução
Também permite fazer
cache de informações em
memória
APC
<?php

$valor = 'Informação que quero armazenar';

//Armazena o valor no cache em memória do APC
apc_store('id_da_informacao', $valor);

// O valor pode ser recuperado em diferentes
scripts através do apc_fetch
var_dump(apc_fetch('id_da_informacao'));

?>
Memcached
Memcached


É necessária a execução
de um daemon
Memcached


É necessária a execução
de um daemon


  Ideal para objetos pequenos
Memcached
<?php
$memcache = new Memcache();
//Conecta no servidor memcached
$memcache->connect('localhost', 11211);

$valor = 'Informação que quero armazenar';

//Envia via socket a informação para o memcached
$memcache->set('id_da_informacao', $valor);

//Recupera a informação
var_dump($memcache->get('id_da_informacao'));
?>
Smarty



    Além de separar lógica
        e visualização, faz
                   caching
Smarty
<?php
require 'smarty/Smarty.class.php';

$id = (int) $_GET['id'];
$smarty = new Smarty();
$smarty->caching = 1;

if(!$smarty->is_cached('noticia.tpl',$id)) {
    //Carrega do banco de dados
}
$smarty->display('noticia.tpl',$id);
?>
Frameworks
(de novo? Já vi esse slide!)
• Frameworks  ajudam em aplicações com
 funcionalidades comuns.

• Ascamadas genéricas de um framework
 acabam gerando overhead.

• Na necessidade de alta performance, você
 vai precisar abrir mão de certos “luxos”
 para ter mais flexibilidade e fazer o tunning.
Armazenamento
em MySQL
Armazenamento
 em MySQL
Performance é
com MyISAM
        Integridade é
         com InnoDB
Front-end
Front-end




 Firebug + YSlow!
<?php
$card = array(
    'nome' => 'Felipe Ribeiro',
    'site' => 'http://feliperibeiro.com',
    'e-mail' => 'felipernb@gmail.com',
    'fone' => '(83) 9979-3161'
);
var_dump($card);
?>
• YSlow:http://developer.yahoo.com/yslow


• Siege:http://www.joedog.org/JoeDog/Siege


• Xdebug      Profiling: http://xdebug.org/docs/
 profiler

• Filter:   http://php.net/filter
Simple is Hard
•
    Rasmus Lerdorf - http://talks.php.net/show/lca09


    Building Scalable Web Sites
•
    Cal Henderson - O’Reilly Media, Inc. 2006


    Desenvolvendo aplicações Web escaláveis
•
    Elton Minetto - http://www.eltonminetto.net/docs/
    app_web_escalaveis.pdf


    Scalable PHP
•
    Cal Henderson - http://www.slideshare.net/iamcal/scalable-php-
    presentation
http://www.flickr.com/photos/jeniee/123356305
http://flickr.com/photos/chriskueh/2277679121
http://www.flickr.com/photos/awfulsara/59884516/
http://www.flickr.com/photos/zach_manchester/2302683790/
http://flickr.com/photos/toofarnorth/2691097127
http://flickr.com/photos/suttonhoo22/247107220
http://flickr.com/photos/conskeptical/191048988
http://flickr.com/photos/kazk/198640938
http://flickr.com/photos/jakecaptive/49915119
http://www.myfreewallpapers.net/music/wallpapers/kiss-fire.jpg
http://flickr.com/photos/chrisjones/12827874/
http://flickr.com/photos/jorel314/2950338887
http://flickr.com/photos/jmarty/1804061993
http://flickr.com/photos/cw_ye/2952033606
http://flickr.com/photos/vgm8383/2191223539
http://flickr.com/photos/petecarr/475437514
http://flickr.com/photos/capsicina/361735510
http://flickr.com/photos/schlomo/3304431482/
http://flickr.com/photos/seandreilinger/133250112/
http://flickr.com/photos/mesolimbo/2543327787
http://flickr.com/photos/hamed/155343130/
http://flickr.com/photos/deniscollette/1817034358
http://flickr.com/photos/robertjosiah/2690194447/
http://flickr.com/photos/blahflowers/1571042854/
http://flickr.com/photos/dey/2203203306/
http://flickr.com/photos/thomashawk/24089964
http://flickr.com/photos/jasohill/118616905/
http://flickr.com/photos/tunnelarmr/2435107204
http://flickr.com/photos/oberazzi/318947873
http://flickr.com/photos/polegario/230055697/
http://flickr.com/photos/cwm/300412682/

Mais conteúdo relacionado

Mais procurados

Joomla! do desktop ao datacenter
Joomla! do desktop ao datacenterJoomla! do desktop ao datacenter
Joomla! do desktop ao datacenterPaulino Michelazzo
 
Deixando de ser moleque com PHP
Deixando de ser moleque com PHPDeixando de ser moleque com PHP
Deixando de ser moleque com PHPVinícius Krolow
 
Vagrant - ambiente de desenvolvimento virtualizado
Vagrant - ambiente de desenvolvimento virtualizadoVagrant - ambiente de desenvolvimento virtualizado
Vagrant - ambiente de desenvolvimento virtualizadoVinícius Krolow
 
Conhecendo o Novo REST Framework
Conhecendo o Novo REST FrameworkConhecendo o Novo REST Framework
Conhecendo o Novo REST FrameworkMario Guedes
 
Depurando Aplicações PHP com XDebug e FirePHP - SETI 2008
Depurando Aplicações PHP com XDebug e FirePHP - SETI 2008Depurando Aplicações PHP com XDebug e FirePHP - SETI 2008
Depurando Aplicações PHP com XDebug e FirePHP - SETI 2008Jefferson Girão
 
Depurando Aplicacoes PHP com XDebug e FirePHP II
Depurando Aplicacoes PHP com XDebug e FirePHP IIDepurando Aplicacoes PHP com XDebug e FirePHP II
Depurando Aplicacoes PHP com XDebug e FirePHP IIJefferson Girão
 
Porque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhor
Porque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhorPorque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhor
Porque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhorDickson S. Guedes
 
BDD - JBehave + SeleniumHQ + PhantomJS + Fixture Factory
BDD - JBehave + SeleniumHQ + PhantomJS  + Fixture FactoryBDD - JBehave + SeleniumHQ + PhantomJS  + Fixture Factory
BDD - JBehave + SeleniumHQ + PhantomJS + Fixture FactoryAndre Vinicius Buzzo
 
Phpreact flisol-fb-2014
Phpreact flisol-fb-2014Phpreact flisol-fb-2014
Phpreact flisol-fb-2014Adler Medrado
 
Cacheamento Lado Servidor
Cacheamento Lado ServidorCacheamento Lado Servidor
Cacheamento Lado ServidorMario Guedes
 
Práticas de Programação em .NET
Práticas de Programação em .NETPráticas de Programação em .NET
Práticas de Programação em .NETComunidade NetPonto
 
Async/Await Pattern in C#
Async/Await Pattern in C#Async/Await Pattern in C#
Async/Await Pattern in C#Leandro Silva
 
9 erros que desenvolvedores Node.js cometem
9 erros que desenvolvedores Node.js cometem9 erros que desenvolvedores Node.js cometem
9 erros que desenvolvedores Node.js cometemFernando Henriques
 
Testes unitários como ferramentas de design de código
Testes unitários como ferramentas de design de códigoTestes unitários como ferramentas de design de código
Testes unitários como ferramentas de design de códigoPaula Grangeiro
 
Entendendo um pouco melhor o que é Ruby
Entendendo um pouco melhor o que é RubyEntendendo um pouco melhor o que é Ruby
Entendendo um pouco melhor o que é Rubycodeland
 

Mais procurados (20)

Joomla! do desktop ao datacenter
Joomla! do desktop ao datacenterJoomla! do desktop ao datacenter
Joomla! do desktop ao datacenter
 
Deixando de ser moleque com PHP
Deixando de ser moleque com PHPDeixando de ser moleque com PHP
Deixando de ser moleque com PHP
 
Vagrant - ambiente de desenvolvimento virtualizado
Vagrant - ambiente de desenvolvimento virtualizadoVagrant - ambiente de desenvolvimento virtualizado
Vagrant - ambiente de desenvolvimento virtualizado
 
Conhecendo o Novo REST Framework
Conhecendo o Novo REST FrameworkConhecendo o Novo REST Framework
Conhecendo o Novo REST Framework
 
Curso gratuitoshellscript nivel-2
Curso gratuitoshellscript nivel-2Curso gratuitoshellscript nivel-2
Curso gratuitoshellscript nivel-2
 
Depurando Aplicações PHP com XDebug e FirePHP - SETI 2008
Depurando Aplicações PHP com XDebug e FirePHP - SETI 2008Depurando Aplicações PHP com XDebug e FirePHP - SETI 2008
Depurando Aplicações PHP com XDebug e FirePHP - SETI 2008
 
Depurando Aplicacoes PHP com XDebug e FirePHP II
Depurando Aplicacoes PHP com XDebug e FirePHP IIDepurando Aplicacoes PHP com XDebug e FirePHP II
Depurando Aplicacoes PHP com XDebug e FirePHP II
 
Porque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhor
Porque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhorPorque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhor
Porque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhor
 
BDD - JBehave + SeleniumHQ + PhantomJS + Fixture Factory
BDD - JBehave + SeleniumHQ + PhantomJS  + Fixture FactoryBDD - JBehave + SeleniumHQ + PhantomJS  + Fixture Factory
BDD - JBehave + SeleniumHQ + PhantomJS + Fixture Factory
 
Bdd&tdd
Bdd&tddBdd&tdd
Bdd&tdd
 
Phpreact flisol-fb-2014
Phpreact flisol-fb-2014Phpreact flisol-fb-2014
Phpreact flisol-fb-2014
 
Trabalhando com Logs no PostgreSQL
Trabalhando com Logs no PostgreSQLTrabalhando com Logs no PostgreSQL
Trabalhando com Logs no PostgreSQL
 
Ruby
RubyRuby
Ruby
 
Cacheamento Lado Servidor
Cacheamento Lado ServidorCacheamento Lado Servidor
Cacheamento Lado Servidor
 
Introducao XP
Introducao XPIntroducao XP
Introducao XP
 
Práticas de Programação em .NET
Práticas de Programação em .NETPráticas de Programação em .NET
Práticas de Programação em .NET
 
Async/Await Pattern in C#
Async/Await Pattern in C#Async/Await Pattern in C#
Async/Await Pattern in C#
 
9 erros que desenvolvedores Node.js cometem
9 erros que desenvolvedores Node.js cometem9 erros que desenvolvedores Node.js cometem
9 erros que desenvolvedores Node.js cometem
 
Testes unitários como ferramentas de design de código
Testes unitários como ferramentas de design de códigoTestes unitários como ferramentas de design de código
Testes unitários como ferramentas de design de código
 
Entendendo um pouco melhor o que é Ruby
Entendendo um pouco melhor o que é RubyEntendendo um pouco melhor o que é Ruby
Entendendo um pouco melhor o que é Ruby
 

Destaque

Técnicas de Invasão - INFOESTE 2015
Técnicas de Invasão - INFOESTE 2015Técnicas de Invasão - INFOESTE 2015
Técnicas de Invasão - INFOESTE 2015C H
 
[QCon 2011] Por uma web mais rápida: técnicas de otimização de Sites
[QCon 2011] Por uma web mais rápida: técnicas de otimização de Sites[QCon 2011] Por uma web mais rápida: técnicas de otimização de Sites
[QCon 2011] Por uma web mais rápida: técnicas de otimização de SitesCaelum
 
HACKING EDUCATION - A metodologia ensino-aprendizagem deve ser Hackeada
HACKING EDUCATION - A metodologia ensino-aprendizagem deve ser HackeadaHACKING EDUCATION - A metodologia ensino-aprendizagem deve ser Hackeada
HACKING EDUCATION - A metodologia ensino-aprendizagem deve ser HackeadaDouglas A. Gomes da Silva
 
VI congresso fecomercio de crimes eletrônicos 04082014 - apresentação de pa...
VI congresso fecomercio de crimes eletrônicos   04082014 - apresentação de pa...VI congresso fecomercio de crimes eletrônicos   04082014 - apresentação de pa...
VI congresso fecomercio de crimes eletrônicos 04082014 - apresentação de pa...FecomercioSP
 
Desenvolvimento em Três Camadas com PHP, MVC e Ajax
Desenvolvimento em Três Camadas com PHP, MVC e AjaxDesenvolvimento em Três Camadas com PHP, MVC e Ajax
Desenvolvimento em Três Camadas com PHP, MVC e AjaxAlmir Neto
 
Livro Aberto Aprendendo a Programar na Linguagem C
Livro Aberto Aprendendo a Programar na Linguagem CLivro Aberto Aprendendo a Programar na Linguagem C
Livro Aberto Aprendendo a Programar na Linguagem CMarcos Quinho
 
5ª ed introdução organização de computadores mario a. monteiro
5ª ed introdução organização de computadores   mario a. monteiro5ª ed introdução organização de computadores   mario a. monteiro
5ª ed introdução organização de computadores mario a. monteiroAdriana Carvalho
 
Introdução a estrutura de dados josé lucas rangel - raulzinho.cb@hotmail.com
Introdução a estrutura de dados   josé lucas rangel - raulzinho.cb@hotmail.comIntrodução a estrutura de dados   josé lucas rangel - raulzinho.cb@hotmail.com
Introdução a estrutura de dados josé lucas rangel - raulzinho.cb@hotmail.comRaul Batalha
 
Sistemas de informações gerenciais kenneth c. laudon - jane p
Sistemas de informações gerenciais   kenneth c. laudon - jane pSistemas de informações gerenciais   kenneth c. laudon - jane p
Sistemas de informações gerenciais kenneth c. laudon - jane pTarciso Ferreira
 
Fundamentos da programação de computadores 2ª edição
Fundamentos da programação de computadores   2ª ediçãoFundamentos da programação de computadores   2ª edição
Fundamentos da programação de computadores 2ª ediçãoLeandro Rocha de Oliveira
 
Livro proibido do curso de hacker completo 285 páginas 71
Livro proibido do curso de hacker completo 285 páginas 71Livro proibido do curso de hacker completo 285 páginas 71
Livro proibido do curso de hacker completo 285 páginas 71Guilherme Dias
 
HTML Interativo com AngularJS
HTML Interativo com AngularJSHTML Interativo com AngularJS
HTML Interativo com AngularJSSheldon Led
 
Entendendo os microframeworks em PHP
Entendendo os microframeworks em PHPEntendendo os microframeworks em PHP
Entendendo os microframeworks em PHPfelipe bastosweb
 
Desenvolvendo aplicações Web escaláveis com PHP
Desenvolvendo aplicações Web escaláveis com PHPDesenvolvendo aplicações Web escaláveis com PHP
Desenvolvendo aplicações Web escaláveis com PHPElton Minetto
 
Usando a programação web para mobile com Twitter Bootstrap
Usando a programação web para mobile com Twitter BootstrapUsando a programação web para mobile com Twitter Bootstrap
Usando a programação web para mobile com Twitter BootstrapFlavio Souza
 
Bootstrap desenvolvendo e customizando interfaces para web, introduzindo aos ...
Bootstrap desenvolvendo e customizando interfaces para web, introduzindo aos ...Bootstrap desenvolvendo e customizando interfaces para web, introduzindo aos ...
Bootstrap desenvolvendo e customizando interfaces para web, introduzindo aos ...Cristofer Sousa
 
Mini-Curso sobre Bootstrap 3
Mini-Curso sobre Bootstrap 3Mini-Curso sobre Bootstrap 3
Mini-Curso sobre Bootstrap 3Diego Doná
 

Destaque (20)

Introdução a HTML, CSS, JS, Ajax
Introdução a HTML, CSS, JS, AjaxIntrodução a HTML, CSS, JS, Ajax
Introdução a HTML, CSS, JS, Ajax
 
Metodos de invasao
Metodos de invasaoMetodos de invasao
Metodos de invasao
 
Técnicas de Invasão - INFOESTE 2015
Técnicas de Invasão - INFOESTE 2015Técnicas de Invasão - INFOESTE 2015
Técnicas de Invasão - INFOESTE 2015
 
[QCon 2011] Por uma web mais rápida: técnicas de otimização de Sites
[QCon 2011] Por uma web mais rápida: técnicas de otimização de Sites[QCon 2011] Por uma web mais rápida: técnicas de otimização de Sites
[QCon 2011] Por uma web mais rápida: técnicas de otimização de Sites
 
HACKING EDUCATION - A metodologia ensino-aprendizagem deve ser Hackeada
HACKING EDUCATION - A metodologia ensino-aprendizagem deve ser HackeadaHACKING EDUCATION - A metodologia ensino-aprendizagem deve ser Hackeada
HACKING EDUCATION - A metodologia ensino-aprendizagem deve ser Hackeada
 
VI congresso fecomercio de crimes eletrônicos 04082014 - apresentação de pa...
VI congresso fecomercio de crimes eletrônicos   04082014 - apresentação de pa...VI congresso fecomercio de crimes eletrônicos   04082014 - apresentação de pa...
VI congresso fecomercio de crimes eletrônicos 04082014 - apresentação de pa...
 
Desenvolvimento em Três Camadas com PHP, MVC e Ajax
Desenvolvimento em Três Camadas com PHP, MVC e AjaxDesenvolvimento em Três Camadas com PHP, MVC e Ajax
Desenvolvimento em Três Camadas com PHP, MVC e Ajax
 
Livro Aberto Aprendendo a Programar na Linguagem C
Livro Aberto Aprendendo a Programar na Linguagem CLivro Aberto Aprendendo a Programar na Linguagem C
Livro Aberto Aprendendo a Programar na Linguagem C
 
5ª ed introdução organização de computadores mario a. monteiro
5ª ed introdução organização de computadores   mario a. monteiro5ª ed introdução organização de computadores   mario a. monteiro
5ª ed introdução organização de computadores mario a. monteiro
 
Introdução a estrutura de dados josé lucas rangel - raulzinho.cb@hotmail.com
Introdução a estrutura de dados   josé lucas rangel - raulzinho.cb@hotmail.comIntrodução a estrutura de dados   josé lucas rangel - raulzinho.cb@hotmail.com
Introdução a estrutura de dados josé lucas rangel - raulzinho.cb@hotmail.com
 
Sistemas de informações gerenciais kenneth c. laudon - jane p
Sistemas de informações gerenciais   kenneth c. laudon - jane pSistemas de informações gerenciais   kenneth c. laudon - jane p
Sistemas de informações gerenciais kenneth c. laudon - jane p
 
Fundamentos da programação de computadores 2ª edição
Fundamentos da programação de computadores   2ª ediçãoFundamentos da programação de computadores   2ª edição
Fundamentos da programação de computadores 2ª edição
 
Livro proibido do curso de hacker completo 285 páginas 71
Livro proibido do curso de hacker completo 285 páginas 71Livro proibido do curso de hacker completo 285 páginas 71
Livro proibido do curso de hacker completo 285 páginas 71
 
JQuery Mobile
JQuery MobileJQuery Mobile
JQuery Mobile
 
HTML Interativo com AngularJS
HTML Interativo com AngularJSHTML Interativo com AngularJS
HTML Interativo com AngularJS
 
Entendendo os microframeworks em PHP
Entendendo os microframeworks em PHPEntendendo os microframeworks em PHP
Entendendo os microframeworks em PHP
 
Desenvolvendo aplicações Web escaláveis com PHP
Desenvolvendo aplicações Web escaláveis com PHPDesenvolvendo aplicações Web escaláveis com PHP
Desenvolvendo aplicações Web escaláveis com PHP
 
Usando a programação web para mobile com Twitter Bootstrap
Usando a programação web para mobile com Twitter BootstrapUsando a programação web para mobile com Twitter Bootstrap
Usando a programação web para mobile com Twitter Bootstrap
 
Bootstrap desenvolvendo e customizando interfaces para web, introduzindo aos ...
Bootstrap desenvolvendo e customizando interfaces para web, introduzindo aos ...Bootstrap desenvolvendo e customizando interfaces para web, introduzindo aos ...
Bootstrap desenvolvendo e customizando interfaces para web, introduzindo aos ...
 
Mini-Curso sobre Bootstrap 3
Mini-Curso sobre Bootstrap 3Mini-Curso sobre Bootstrap 3
Mini-Curso sobre Bootstrap 3
 

Semelhante a PHP Jedi - Boas Práticas e Alta Performance

Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2PrinceGuru MS
 
Palestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAPalestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAThiago Cifani
 
LabMM3 - Aula teórica 04
LabMM3 - Aula teórica 04LabMM3 - Aula teórica 04
LabMM3 - Aula teórica 04Carlos Santos
 
Desenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveisDesenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveiselliando dias
 
Depurando aplicações PHP like a BOSS
Depurando aplicações PHP like a BOSSDepurando aplicações PHP like a BOSS
Depurando aplicações PHP like a BOSSThiago Rodrigues
 
Memcached, Gearman e Sphinx
Memcached, Gearman e SphinxMemcached, Gearman e Sphinx
Memcached, Gearman e SphinxElton Minetto
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHPFelipe Ribeiro
 
Seu framework é melhor pra quê?
Seu framework é melhor pra quê?Seu framework é melhor pra quê?
Seu framework é melhor pra quê?Jaime Neto
 
T03_LM3: Javascript (2013-2014)
T03_LM3: Javascript (2013-2014)T03_LM3: Javascript (2013-2014)
T03_LM3: Javascript (2013-2014)Carlos Santos
 
PHP - Programação para seres humanos
PHP - Programação para seres humanosPHP - Programação para seres humanos
PHP - Programação para seres humanosCaike Souza
 
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
 
Desenvolvimento Web Avançado usando PHP
Desenvolvimento Web Avançado usando PHPDesenvolvimento Web Avançado usando PHP
Desenvolvimento Web Avançado usando PHPelliando dias
 
TDC2016POA | Trilha Python - Heimdall Guard - Spam Filter
TDC2016POA | Trilha Python - Heimdall Guard - Spam FilterTDC2016POA | Trilha Python - Heimdall Guard - Spam Filter
TDC2016POA | Trilha Python - Heimdall Guard - Spam Filtertdc-globalcode
 
Integração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlIntegração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlDiego Tremper
 
Painel HHVM, Zephir, PHPNG
Painel HHVM, Zephir, PHPNGPainel HHVM, Zephir, PHPNG
Painel HHVM, Zephir, PHPNGiMasters
 
PHP like a super hero
PHP like a super heroPHP like a super hero
PHP like a super heroElton Minetto
 

Semelhante a PHP Jedi - Boas Práticas e Alta Performance (20)

Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2
 
Ruby On Rails Regis
Ruby On Rails RegisRuby On Rails Regis
Ruby On Rails Regis
 
Palestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAPalestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVA
 
LabMM3 - Aula teórica 04
LabMM3 - Aula teórica 04LabMM3 - Aula teórica 04
LabMM3 - Aula teórica 04
 
Desenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveisDesenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveis
 
Depurando aplicações PHP like a BOSS
Depurando aplicações PHP like a BOSSDepurando aplicações PHP like a BOSS
Depurando aplicações PHP like a BOSS
 
Memcached, Gearman e Sphinx
Memcached, Gearman e SphinxMemcached, Gearman e Sphinx
Memcached, Gearman e Sphinx
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHP
 
Zephir
ZephirZephir
Zephir
 
Seu framework é melhor pra quê?
Seu framework é melhor pra quê?Seu framework é melhor pra quê?
Seu framework é melhor pra quê?
 
T03_LM3: Javascript (2013-2014)
T03_LM3: Javascript (2013-2014)T03_LM3: Javascript (2013-2014)
T03_LM3: Javascript (2013-2014)
 
PHP - Programação para seres humanos
PHP - Programação para seres humanosPHP - Programação para seres humanos
PHP - Programação para seres humanos
 
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
 
Desenvolvimento Web Avançado usando PHP
Desenvolvimento Web Avançado usando PHPDesenvolvimento Web Avançado usando PHP
Desenvolvimento Web Avançado usando PHP
 
TDC2016POA | Trilha Python - Heimdall Guard - Spam Filter
TDC2016POA | Trilha Python - Heimdall Guard - Spam FilterTDC2016POA | Trilha Python - Heimdall Guard - Spam Filter
TDC2016POA | Trilha Python - Heimdall Guard - Spam Filter
 
Sapo Sessions PHP
Sapo Sessions PHPSapo Sessions PHP
Sapo Sessions PHP
 
Integração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlIntegração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControl
 
Plack
PlackPlack
Plack
 
Painel HHVM, Zephir, PHPNG
Painel HHVM, Zephir, PHPNGPainel HHVM, Zephir, PHPNG
Painel HHVM, Zephir, PHPNG
 
PHP like a super hero
PHP like a super heroPHP like a super hero
PHP like a super hero
 

Mais de Felipe Ribeiro

PHP RESTful Web Services - PHPConf'09
PHP RESTful Web Services - PHPConf'09PHP RESTful Web Services - PHPConf'09
PHP RESTful Web Services - PHPConf'09Felipe Ribeiro
 
Software livre e padrões abertos no desenvolvimento Web
Software livre e padrões abertos no desenvolvimento WebSoftware livre e padrões abertos no desenvolvimento Web
Software livre e padrões abertos no desenvolvimento WebFelipe Ribeiro
 
PHP RESTful Web Services
PHP RESTful Web ServicesPHP RESTful Web Services
PHP RESTful Web ServicesFelipe Ribeiro
 
PHP para aplicações Web de grande porte
PHP para aplicações Web  de grande portePHP para aplicações Web  de grande porte
PHP para aplicações Web de grande porteFelipe Ribeiro
 

Mais de Felipe Ribeiro (6)

PHP RESTful Web Services - PHPConf'09
PHP RESTful Web Services - PHPConf'09PHP RESTful Web Services - PHPConf'09
PHP RESTful Web Services - PHPConf'09
 
SPL Datastructures
SPL DatastructuresSPL Datastructures
SPL Datastructures
 
PHP 5.3 - What's new?
PHP 5.3 - What's new?PHP 5.3 - What's new?
PHP 5.3 - What's new?
 
Software livre e padrões abertos no desenvolvimento Web
Software livre e padrões abertos no desenvolvimento WebSoftware livre e padrões abertos no desenvolvimento Web
Software livre e padrões abertos no desenvolvimento Web
 
PHP RESTful Web Services
PHP RESTful Web ServicesPHP RESTful Web Services
PHP RESTful Web Services
 
PHP para aplicações Web de grande porte
PHP para aplicações Web  de grande portePHP para aplicações Web  de grande porte
PHP para aplicações Web de grande porte
 

PHP Jedi - Boas Práticas e Alta Performance