SlideShare une entreprise Scribd logo
1  sur  96
Télécharger pour lire hors ligne
php
Jedi
 Boas práticas e
alta performance



    Felipe Ribeiro
    http://feliperibeiro.com
    felipernb@gmail.com
"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!" -
                   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
• Por   exemplo, as convenções do Java:

• 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

• Variáveiscom nomes como: $xpto, $foo,
 $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
"Don't comment bad
  code - rewrite it."
 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/

Contenu connexe

Tendances

Curso Linguagem de Programação I - PHP Básico
Curso Linguagem de Programação I - PHP BásicoCurso Linguagem de Programação I - PHP Básico
Curso Linguagem de Programação I - PHP BásicoNorton Guimarães
 
Memcached, Gearman e Sphinx
Memcached, Gearman e SphinxMemcached, Gearman e Sphinx
Memcached, Gearman e SphinxElton Minetto
 
[FISL 16] PHP no Campo de Batalha: Segurança Avançada e Programação Defensiva...
[FISL 16] PHP no Campo de Batalha: Segurança Avançada e Programação Defensiva...[FISL 16] PHP no Campo de Batalha: Segurança Avançada e Programação Defensiva...
[FISL 16] PHP no Campo de Batalha: Segurança Avançada e Programação Defensiva...Rafael Jaques
 
Serversidephp pptx2-120418140114-phpapp01
Serversidephp pptx2-120418140114-phpapp01Serversidephp pptx2-120418140114-phpapp01
Serversidephp pptx2-120418140114-phpapp01joaocarlobarros
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosRegis Magalhães
 
PHP Experience 2016 - [Palestra] Keynote: PHP-7
PHP Experience 2016 - [Palestra] Keynote: PHP-7PHP Experience 2016 - [Palestra] Keynote: PHP-7
PHP Experience 2016 - [Palestra] Keynote: PHP-7iMasters
 
Minicurso PHP básico
Minicurso PHP básicoMinicurso PHP básico
Minicurso PHP básicoCezar Souza
 
PHP Experience 2016 - [Palestra] Rumo à Certificação PHP
PHP Experience 2016 - [Palestra] Rumo à Certificação PHPPHP Experience 2016 - [Palestra] Rumo à Certificação PHP
PHP Experience 2016 - [Palestra] Rumo à Certificação PHPiMasters
 
CURSO DE PHP PARA INICIANTES - AULA 1
CURSO DE PHP PARA INICIANTES - AULA 1CURSO DE PHP PARA INICIANTES - AULA 1
CURSO DE PHP PARA INICIANTES - AULA 1Norivan Oliveira
 
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
 
Desenvolvendo Extensões PECL
Desenvolvendo Extensões PECLDesenvolvendo Extensões PECL
Desenvolvendo Extensões PECLW3P Projetos Web
 
Desenvolvendo uma Aplicação WEB usando o Python e o CherryPy
Desenvolvendo uma Aplicação WEB usando o Python e o CherryPyDesenvolvendo uma Aplicação WEB usando o Python e o CherryPy
Desenvolvendo uma Aplicação WEB usando o Python e o CherryPyantonio sérgio nogueira
 
Aula03 PHP - Estruturas Condicionais
Aula03 PHP - Estruturas CondicionaisAula03 PHP - Estruturas Condicionais
Aula03 PHP - Estruturas CondicionaisDaniel Brandão
 

Tendances (20)

Curso Linguagem de Programação I - PHP Básico
Curso Linguagem de Programação I - PHP BásicoCurso Linguagem de Programação I - PHP Básico
Curso Linguagem de Programação I - PHP Básico
 
Doctrine2 Seminário PHP
Doctrine2 Seminário PHPDoctrine2 Seminário PHP
Doctrine2 Seminário PHP
 
Memcached, Gearman e Sphinx
Memcached, Gearman e SphinxMemcached, Gearman e Sphinx
Memcached, Gearman e Sphinx
 
[FISL 16] PHP no Campo de Batalha: Segurança Avançada e Programação Defensiva...
[FISL 16] PHP no Campo de Batalha: Segurança Avançada e Programação Defensiva...[FISL 16] PHP no Campo de Batalha: Segurança Avançada e Programação Defensiva...
[FISL 16] PHP no Campo de Batalha: Segurança Avançada e Programação Defensiva...
 
Serversidephp pptx2-120418140114-phpapp01
Serversidephp pptx2-120418140114-phpapp01Serversidephp pptx2-120418140114-phpapp01
Serversidephp pptx2-120418140114-phpapp01
 
Introdução a php
Introdução a phpIntrodução a php
Introdução a php
 
Php 02 Primeiros Passos
Php 02 Primeiros PassosPhp 02 Primeiros Passos
Php 02 Primeiros Passos
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passos
 
PHP Experience 2016 - [Palestra] Keynote: PHP-7
PHP Experience 2016 - [Palestra] Keynote: PHP-7PHP Experience 2016 - [Palestra] Keynote: PHP-7
PHP Experience 2016 - [Palestra] Keynote: PHP-7
 
Slides
SlidesSlides
Slides
 
Minicurso PHP básico
Minicurso PHP básicoMinicurso PHP básico
Minicurso PHP básico
 
PHP Experience 2016 - [Palestra] Rumo à Certificação PHP
PHP Experience 2016 - [Palestra] Rumo à Certificação PHPPHP Experience 2016 - [Palestra] Rumo à Certificação PHP
PHP Experience 2016 - [Palestra] Rumo à Certificação PHP
 
Doctrine for Dummies
Doctrine for DummiesDoctrine for Dummies
Doctrine for Dummies
 
CURSO DE PHP PARA INICIANTES - AULA 1
CURSO DE PHP PARA INICIANTES - AULA 1CURSO DE PHP PARA INICIANTES - AULA 1
CURSO DE PHP PARA INICIANTES - AULA 1
 
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
PhpPhp
Php
 
Desenvolvendo Extensões PECL
Desenvolvendo Extensões PECLDesenvolvendo Extensões PECL
Desenvolvendo Extensões PECL
 
Desenvolvendo uma Aplicação WEB usando o Python e o CherryPy
Desenvolvendo uma Aplicação WEB usando o Python e o CherryPyDesenvolvendo uma Aplicação WEB usando o Python e o CherryPy
Desenvolvendo uma Aplicação WEB usando o Python e o CherryPy
 
Aula03 PHP - Estruturas Condicionais
Aula03 PHP - Estruturas CondicionaisAula03 PHP - Estruturas Condicionais
Aula03 PHP - Estruturas Condicionais
 
PHP - Strings
PHP - StringsPHP - Strings
PHP - Strings
 

En vedette

Corephpcomponentpresentation 1211425966721657-8
Corephpcomponentpresentation 1211425966721657-8Corephpcomponentpresentation 1211425966721657-8
Corephpcomponentpresentation 1211425966721657-8PrinceGuru MS
 
Php tips-and-tricks4128
Php tips-and-tricks4128Php tips-and-tricks4128
Php tips-and-tricks4128PrinceGuru MS
 
Php and-web-services-24402
Php and-web-services-24402Php and-web-services-24402
Php and-web-services-24402PrinceGuru MS
 
Php tutorial from_beginner_to_master
Php tutorial from_beginner_to_masterPhp tutorial from_beginner_to_master
Php tutorial from_beginner_to_masterPrinceGuru MS
 

En vedette (9)

Php security3895
Php security3895Php security3895
Php security3895
 
Php tizag tutorial
Php tizag tutorialPhp tizag tutorial
Php tizag tutorial
 
Corephpcomponentpresentation 1211425966721657-8
Corephpcomponentpresentation 1211425966721657-8Corephpcomponentpresentation 1211425966721657-8
Corephpcomponentpresentation 1211425966721657-8
 
Php tips-and-tricks4128
Php tips-and-tricks4128Php tips-and-tricks4128
Php tips-and-tricks4128
 
Php and-web-services-24402
Php and-web-services-24402Php and-web-services-24402
Php and-web-services-24402
 
Php simple
Php simplePhp simple
Php simple
 
Phpbasics
PhpbasicsPhpbasics
Phpbasics
 
Php tutorial from_beginner_to_master
Php tutorial from_beginner_to_masterPhp tutorial from_beginner_to_master
Php tutorial from_beginner_to_master
 
Drupal refcard
Drupal refcardDrupal refcard
Drupal refcard
 

Similaire à PHP Performance e Boas Práticas

PHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta PerformancePHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta PerformanceFelipe Ribeiro
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHPFelipe Ribeiro
 
Desenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveisDesenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveiselliando dias
 
PHP like a super hero
PHP like a super heroPHP like a super hero
PHP like a super heroElton Minetto
 
Painel HHVM, Zephir, PHPNG
Painel HHVM, Zephir, PHPNGPainel HHVM, Zephir, PHPNG
Painel HHVM, Zephir, PHPNGiMasters
 
Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5Lucas Augusto Carvalho
 
Cakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPCakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPArlindo Santos
 
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
 
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
 
Seu framework é melhor pra quê?
Seu framework é melhor pra quê?Seu framework é melhor pra quê?
Seu framework é melhor pra quê?Jaime Neto
 
Aws sao paulo summit 2015 elasti cache avancado
Aws sao paulo summit 2015   elasti cache avancadoAws sao paulo summit 2015   elasti cache avancado
Aws sao paulo summit 2015 elasti cache avancadoAmazon Web Services LATAM
 
PHPMyadmin - Introdução
PHPMyadmin - IntroduçãoPHPMyadmin - Introdução
PHPMyadmin - IntroduçãoMarco Pinheiro
 
Comandos gerais do PHP
Comandos gerais do PHPComandos gerais do PHP
Comandos gerais do PHPPaulo Dayvson
 

Similaire à PHP Performance e Boas Práticas (20)

PHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta PerformancePHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta Performance
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHP
 
Desenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveisDesenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveis
 
Zephir
ZephirZephir
Zephir
 
PHP like a super hero
PHP like a super heroPHP like a super hero
PHP like a super hero
 
Painel HHVM, Zephir, PHPNG
Painel HHVM, Zephir, PHPNGPainel HHVM, Zephir, PHPNG
Painel HHVM, Zephir, PHPNG
 
Cakephp 2.0 - O que mudou
Cakephp 2.0 - O que mudouCakephp 2.0 - O que mudou
Cakephp 2.0 - O que mudou
 
Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5
 
Sapo Sessions PHP
Sapo Sessions PHPSapo Sessions PHP
Sapo Sessions PHP
 
Modern PHP
Modern PHPModern PHP
Modern PHP
 
Cakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPCakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHP
 
Programando php com excelência
Programando php com excelênciaProgramando php com excelência
Programando php com excelência
 
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
 
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
 
Seu framework é melhor pra quê?
Seu framework é melhor pra quê?Seu framework é melhor pra quê?
Seu framework é melhor pra quê?
 
Aws sao paulo summit 2015 elasti cache avancado
Aws sao paulo summit 2015   elasti cache avancadoAws sao paulo summit 2015   elasti cache avancado
Aws sao paulo summit 2015 elasti cache avancado
 
PHPMyadmin - Introdução
PHPMyadmin - IntroduçãoPHPMyadmin - Introdução
PHPMyadmin - Introdução
 
Comandos gerais do PHP
Comandos gerais do PHPComandos gerais do PHP
Comandos gerais do PHP
 
Palestra
PalestraPalestra
Palestra
 
Manual
ManualManual
Manual
 

PHP Performance e Boas Práticas