SlideShare ist ein Scribd-Unternehmen logo
1 von 51
Downloaden Sie, um offline zu lesen
Dicas para aumentar a performance de
          um software PHP

     Almir Neto – almirneto@gmail.com

        PHP Conference Brazil 2009
         http://www.phpconf.com.br
     Osasco, 27 de Novembro de 2009
Dicas para aumentar a performance de
          um software PHP

Grupo de Desenvolvedores PHP de Goiás
●   Lista de Discussão
●   Troca de Conhecimentos
●   Encontros
●   Palestras
●   Eventos
●   http://www.php.org.br
●   http://www.gophp.com.br
Dicas para aumentar a performance de um software PHP




     Saída de dados




                      Almir Neto
                almirneto@gmail.com
Dicas para aumentar a performance de um software PHP




1 - echo é mais rápido que print

 http://www.faqts.com/knowledge_base/vie
            w.phtml/aid/1/fid/40




                           Almir Neto
                     almirneto@gmail.com
Dicas para aumentar a performance de um software PHP


 2 - Aspas simples são mais rápidas
 com concatenação do que colocar
  variáveis dentro de aspas duplas
Lento:
echo "Meu nome é $nome";


Rápido:
echo 'Meu nome é ' . $nome;




                                    Almir Neto
                              almirneto@gmail.com
Dicas para aumentar a performance de um software PHP




 3 - Utilizar vários parâmetros
 com echo é mais rápido que
            concatenar
Lento:
echo 'Em ' . $cidade . ' são ' . $horas . ' $horas ';

Rápido:
echo 'Em ', $cidade, ' são ', $horas, ' $horas ';



                                 Almir Neto
                           almirneto@gmail.com
Dicas para aumentar a performance de um software PHP




 Laços de Repetição




                      Almir Neto
                almirneto@gmail.com
Dicas para aumentar a performance de um software PHP


    Chamadas de funções são lentas!
4 - Não utilize chamadas a funções no bloco
    de controle do laço de repetição for()
  Fazendo isso a chamada será feita em cada iteração do laço de repetição

 Lento:
 for ( $i = 1; $i < sizeof($array); $i++ ) {}

 Rápido:
 $size = sizeof($array);
 for ( $i = 1; $i < $size; $i++ ) {}


                                   Almir Neto
                             almirneto@gmail.com
Dicas para aumentar a performance de um software PHP



            5 - strlen() é muito lento!
 Ao checar o tamanho de strings, ao invés de utilizar strlen(),
                utilize isset se for possível
Lento:
if(strlen($_POST['nome']) < 5) echo 'O campo nome é menor
do que cinco';

Rápido:
if(!isset($_POST['nome']{5})) echo 'O campo nome é menor do
que cinco';


                               Almir Neto
                         almirneto@gmail.com
Dicas para aumentar a performance de um software PHP



            6 - Utilize pré-incremento
 Pré-incrementar variáveis é 10% mais rápido que pós-incrementar


Lento:
$contador++;

Rápido:
++$contador;



                               Almir Neto
                         almirneto@gmail.com
Dicas para aumentar a performance de um software PHP




 7 - Incrementar uma variável
indefinida é até 10 vezes mais
lento que uma pré-inicializada.



                          Almir Neto
                    almirneto@gmail.com
Dicas para aumentar a performance de um software PHP




8 - Incrementar uma variável
global é mais lento que uma
        variável local.



                         Almir Neto
                   almirneto@gmail.com
Dicas para aumentar a performance de um software PHP




     9 - Incrementar um
atributo($this->var++) é mais
lento que uma variável local.


                         Almir Neto
                   almirneto@gmail.com
Dicas para aumentar a performance de um software PHP




Variáveis e Funções




                      Almir Neto
                almirneto@gmail.com
Dicas para aumentar a performance de um software PHP




        10 - Libere memória
Utilize unset() para liberar as variáveis que não for mais
          utilizar, principalmente grandes arrays




                             Almir Neto
                       almirneto@gmail.com
Dicas para aumentar a performance de um software PHP




11 - Utilize require() e include()
 ao invés de require_once() e
          include_once()


                           Almir Neto
                     almirneto@gmail.com
Dicas para aumentar a performance de um software PHP




  12 - Sempre utilize caminho
  completo ao incluir arquivos
Lento:
include('noticias.php');

Rápido:
include('/var/www/html/noticias.php');



                                 Almir Neto
                           almirneto@gmail.com
Dicas para aumentar a performance de um software PHP




13 - Switch é lento. Utilize else if
      para testes múltiplos.



                           Almir Neto
                     almirneto@gmail.com
Dicas para aumentar a performance de um software PHP


            14 - Evite funções inúteis
Ao invés de utilizar as funções:
- php_version();
- php_uname('s');
- php_sapi_name();

Utilize as constantes:
- PHP_VERSION
- PHP_OS
- PHP_SAPI


                               Almir Neto
                         almirneto@gmail.com
Dicas para aumentar a performance de um software PHP



15 - Não utilize funções para descobrir se o
               SO é Windows


Rápido e Fácil:
$windows = DIRECTORY_SEPARATOR == '';




                             Almir Neto
                       almirneto@gmail.com
Dicas para aumentar a performance de um software PHP



 16 - Para descobrir a hora correta com
       precisão não utilize funções


Rápido:
$_SERVER['REQUEST_TIME']




                            Almir Neto
                      almirneto@gmail.com
Dicas para aumentar a performance de um software PHP



  17 - Evite utilizar expressões regulares

Lento:
if (preg_match("!string!i", "text")) {}

Rápido:
if (stripos("text", "string") !== false) {}




                                   Almir Neto
                             almirneto@gmail.com
Dicas para aumentar a performance de um software PHP



 18 - Jamais utilize @ para suprimir erros
         Internamente o caracter @ faz intensas operações


// @action();
$old = ini_set(“error_reporting”, 0);
action();
ini_set(“error_reporting”, $old);




                                Almir Neto
                          almirneto@gmail.com
Dicas para aumentar a performance de um software PHP


19 - Compare strings com a função que tem
             essa finalidade
Muito Lento:
if (preg_match('!^WIN!', PHP_OS)) {
if (preg_match('!^WIN!i', PHP_OS)) {


Lento:
if (substr(PHP_OS, 0, 3) == 'WIN') {
if (strtolower(substr(PHP_OS, 0, 3))) == 'win') {


Rápido:
if (!strncmp(PHP_OS, 'WIN', 3)) {
if (!strncasecmp(PHP_OS, 'WIN', 3)) {



                                          Almir Neto
                                    almirneto@gmail.com
Dicas para aumentar a performance de um software PHP



20 - Utilize substr_compare() para comparar
              pedaços de strings

Lento:
if (substr($class, -15) != 'text')

Rápido
if (substr_compare($class, 'text', -15))




                                  Almir Neto
                            almirneto@gmail.com
Dicas para aumentar a performance de um software PHP




              Arrays




                      Almir Neto
                almirneto@gmail.com
Dicas para aumentar a performance de um software PHP


21 - Itens de arrays que são strings devem
        ser chamados como strings
$array = array('chave' => 'valor');

Lento:
$array[chave] = 0;

Rápido:
$array['chave'];
O PHP primeiramente procura pela constante chave, e depois converte essa
       constante para string. Um erro do tipo E_NOTICE é gerado



                                  Almir Neto
                            almirneto@gmail.com
Dicas para aumentar a performance de um software PHP


      22 - Referências podem aumentar a
                 performance
$array['b']['c'] = array();

Lento:
for($cont = 0; $cont < 5; $cont++)
  $array['b']['c'][$cont] = $cont;

Rápido:
$referencia =& $array['b']['c'];
for($cont = 0; $cont < 5; $cont++)
  $referencia[$cont] = $cont;




                                         Almir Neto
                                   almirneto@gmail.com
Dicas para aumentar a performance de um software PHP




Orientação a Objetos




                      Almir Neto
                almirneto@gmail.com
Dicas para aumentar a performance de um software PHP




23 - Sempre declare seus
 métodos como estáticos



                       Almir Neto
                 almirneto@gmail.com
Dicas para aumentar a performance de um software PHP




   24 - Utilize constantes de
              classes
- São analisadas na compilação, não sobrecarregando a
                      execução.




                            Almir Neto
                      almirneto@gmail.com
Dicas para aumentar a performance de um software PHP




25 - Não utilize métodos mágicos

- __get()
- __set()
- __autoload()
- __call()




                                   Almir Neto
                             almirneto@gmail.com
Dicas para aumentar a performance de um software PHP




26 - Métodos de classes filhas
são mais rápidos que métodos
       da classe base



                          Almir Neto
                    almirneto@gmail.com
Dicas para aumentar a performance de um software PHP




   27 - Somente utilize POO
quando for realmente necessário
Sistemas POO são ligeiramente mais lentos pois chamadas
     a métodos e objetos consomem muita memória.




                              Almir Neto
                        almirneto@gmail.com
Dicas para aumentar a performance de um software PHP




        Outras Dicas




                      Almir Neto
                almirneto@gmail.com
Dicas para aumentar a performance de um software PHP




    28 - Quando tiver páginas
     estáticas, não utilize a
    extensão .php, mas .html
Dessa maneira o interpretador do PHP nem é chamado, e
  os dados são enviados diretamente ao navegador do
                        cliente.




                             Almir Neto
                       almirneto@gmail.com
Dicas para aumentar a performance de um software PHP




29 - Escreva suas funções em C
O PHP permite a escrita de funções em C e utilizá-las como
 extensão do PHP. Dessa maneira a velocidade aumenta
  consideravelmente, pois a função estará compilada no
                     núcleo do PHP.




                              Almir Neto
                        almirneto@gmail.com
Dicas para aumentar a performance de um software PHP




30 - Sempre feche as conexões
 com o banco de dados após a
        sua utilização



                          Almir Neto
                    almirneto@gmail.com
Dicas para aumentar a performance de um software PHP




    31 - Utilize uma solução de
                cache
 Os scripts PHP são recompilados a cada requisição. Com
uma solução de cache essa recompilação não é feita a todo
                        o tempo.




                              Almir Neto
                        almirneto@gmail.com
Dicas para aumentar a performance de um software PHP




32 - Utilize um sistema de profile
para descobrir onde há gargalos
           na aplicação



                           Almir Neto
                     almirneto@gmail.com
Dicas para aumentar a performance de um software PHP




              33 – Use Linux!!

     Testes utilizando Linux/Apache e
   Windows/Apache mostram que o Linux
 chega a ser 7x mais rápido que o Windows
           para interpretar PHP.
http://www.paessler.com/webstress/sample_performance_tests/co
    mparing_php_script_performance_on_linux_and_windows



                               Almir Neto
                         almirneto@gmail.com
Dicas para aumentar a performance de um software PHP




Configurações do Servidor




                        Almir Neto
                  almirneto@gmail.com
Dicas para aumentar a performance de um software PHP




               IO de arquivos
- Deixe a lista do atributo DirectoryIndex o mais curto
possível;
- Quando possível desabilite o .htaccess através do
atributo AllowOverride none;
- Se a gravação de logs for desnecessária, desabilite-os;
- Se os logs forem realmente necessários, grave tudo em
um só arquivo.


                              Almir Neto
                        almirneto@gmail.com
Dicas para aumentar a performance de um software PHP




           Controle de Saída
 Habilite Output Buffering em um script com ob_start() ou
para todos os scripts com o atributo output_buffering = On

 Dessa maneira a página é enviada de uma só vez para o
sistema operacional, aumentando o tempo de renderização
                      do navegador




                              Almir Neto
                        almirneto@gmail.com
Dicas para aumentar a performance de um software PHP




               Controle de Saída
      Menor quantidade de saída = Maior performance
- Reduz a utilização de recursos do servidor como CPU, HD e Memória
- A página carrega mais rapidamente
- Diminui o tráfego de dados na rede, que geralmente é o maior gargalo
em aplicações.




                                  Almir Neto
                            almirneto@gmail.com
Dicas para aumentar a performance de um software PHP



                Conteúdo Estático
   Para conteúdo dinâmico o Apache é ótimo, porém para
   conteúdo estático há outros servidores web bem mais
                         rápidos.
- lighttpd
- boa
- tux
- thttpd


Para conteúdo estático esses servidores chegam a ser 400% mais
rápidos que o Apache.


                                   Almir Neto
                             almirneto@gmail.com
Dicas para aumentar a performance de um software PHP



         Compressão de Dados
  A maioria dos navegadores suporta dados comprimidos
- Páginas comprimidas são até 8 vezes menores
-> Apache 1 - mod_gzip / mod_deflate
-> Apache 2 - mod_deflate
-> PHP
   - Em um script: ob_start('ob_gzhandler');
   - Nas configurações do PHP: zlib.output_compression = 1




                                  Almir Neto
                            almirneto@gmail.com
Dicas para aumentar a performance de um software PHP



       Configurações do PHP
- register_globals = Off
- magic_quotes_gpc = Off
- expose_php = Off
- register_argc_argv = Off
- always_populate_raw_post_data = Off
- session.use_trans_sid = Off
- session.auto_start = Off
- session.gc_divisor = 1000 or 10000


                              Almir Neto
                        almirneto@gmail.com
Dicas para aumentar a performance de um software PHP



   Armazenamento de Sessões
- Por padrão o PHP armazena cada sessão em um arquivo separado
- Muitos arquivos em um só diretório reduz a velocidade de acesso
-> Grave as sessões em vários diretórios
   session.save_path = "N;path"


- Grave as sessões na memória
-> apc
-> memcache




                                  Almir Neto
                            almirneto@gmail.com
Dicas para aumentar a performance de um software PHP


     Bibliografia / Agradecimentos
• PHP & Performance:
  - Ilia Alshanetsky
  http://talks.php.net/show/perf_tunning
• PHP Optimization Tips
  http://progtuts.info/55/php-optimization-tips/
• Dicas de otimização do servidor:
  http://phplens.com/lens/php-book/optimizing-debugging-php.php
• Artigos da IBM sobre PHP:
  http://www.ibm.com/developerworks/opensource/top-projects/php.html
  http://www.ibm.com/developerworks/views/opensource/libraryview.jsp?
  search_by=make+php+apps+fast
• Paessler
  http://www.paessler.com/webstress/sample_performance_tests/comparing_
  php_script_performance_on_linux_and_windows


                                           Almir Neto
                                     almirneto@gmail.com
Dicas para aumentar a performance de um software PHP




                  Fim



                      Almir Neto
                almirneto@gmail.com

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (6)

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
 
Mini Curso de PHP
Mini Curso de PHPMini Curso de PHP
Mini Curso de PHP
 
Macros no asterisk
Macros no asteriskMacros no asterisk
Macros no asterisk
 
Envio e Recebimento SMS
Envio e Recebimento SMSEnvio e Recebimento SMS
Envio e Recebimento SMS
 
Introdução ao PHP
Introdução ao PHPIntrodução ao PHP
Introdução ao PHP
 
Código legado - PHP Conference Brasil - 2014
Código legado - PHP Conference Brasil - 2014Código legado - PHP Conference Brasil - 2014
Código legado - PHP Conference Brasil - 2014
 

Andere mochten auch

Melhorando o desempenho de suas consultas no MySql
Melhorando o desempenho de suas consultas no MySqlMelhorando o desempenho de suas consultas no MySql
Melhorando o desempenho de suas consultas no MySqlHelder Lopes
 
[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
 
Tuning Apache/MySQL/PHP para desenvolvedores
Tuning Apache/MySQL/PHP para desenvolvedoresTuning Apache/MySQL/PHP para desenvolvedores
Tuning Apache/MySQL/PHP para desenvolvedoresDouglas V. Pasqua
 
CakePHP com sotaque brasileiro
CakePHP com sotaque brasileiroCakePHP com sotaque brasileiro
CakePHP com sotaque brasileiroJuan Basso
 
Glosario de qbasic liliana
Glosario de qbasic lilianaGlosario de qbasic liliana
Glosario de qbasic lilianakhjhjhjh
 
Conceitos básicos de AEDS
Conceitos básicos de AEDSConceitos básicos de AEDS
Conceitos básicos de AEDSPablo Silva
 
Análise assintótica
Análise assintóticaAnálise assintótica
Análise assintóticaPablo Silva
 
C# .NET - Um overview da linguagem
C# .NET - Um overview da linguagem C# .NET - Um overview da linguagem
C# .NET - Um overview da linguagem Claudson Oliveira
 
Slide Aula - Curso CakePHP
Slide Aula - Curso CakePHPSlide Aula - Curso CakePHP
Slide Aula - Curso CakePHPRangel Javier
 
Assembly para pc-25paginas
Assembly para pc-25paginasAssembly para pc-25paginas
Assembly para pc-25paginasMikeNandes
 
CakePHP - Aprendendo a fazer o primeiro bolo
CakePHP - Aprendendo a fazer o primeiro boloCakePHP - Aprendendo a fazer o primeiro bolo
CakePHP - Aprendendo a fazer o primeiro boloelliando dias
 
Relações de recorrência
Relações de recorrênciaRelações de recorrência
Relações de recorrênciaPablo Silva
 
CakePHP e o desenvolvimento rápido
CakePHP e o desenvolvimento rápidoCakePHP e o desenvolvimento rápido
CakePHP e o desenvolvimento rápidoIvan Rosolen
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHPFelipe Ribeiro
 

Andere mochten auch (20)

Melhorando o desempenho de suas consultas no MySql
Melhorando o desempenho de suas consultas no MySqlMelhorando o desempenho de suas consultas no MySql
Melhorando o desempenho de suas consultas no MySql
 
[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
 
Tuning Apache/MySQL/PHP para desenvolvedores
Tuning Apache/MySQL/PHP para desenvolvedoresTuning Apache/MySQL/PHP para desenvolvedores
Tuning Apache/MySQL/PHP para desenvolvedores
 
CakePHP com sotaque brasileiro
CakePHP com sotaque brasileiroCakePHP com sotaque brasileiro
CakePHP com sotaque brasileiro
 
Glosario de qbasic liliana
Glosario de qbasic lilianaGlosario de qbasic liliana
Glosario de qbasic liliana
 
Recursividade
RecursividadeRecursividade
Recursividade
 
Funções em C
Funções em CFunções em C
Funções em C
 
Conceitos básicos de AEDS
Conceitos básicos de AEDSConceitos básicos de AEDS
Conceitos básicos de AEDS
 
PROGRAMAS QBASIC
PROGRAMAS QBASICPROGRAMAS QBASIC
PROGRAMAS QBASIC
 
Análise assintótica
Análise assintóticaAnálise assintótica
Análise assintótica
 
C# .NET - Um overview da linguagem
C# .NET - Um overview da linguagem C# .NET - Um overview da linguagem
C# .NET - Um overview da linguagem
 
Apostila cobol
Apostila cobolApostila cobol
Apostila cobol
 
Slide Aula - Curso CakePHP
Slide Aula - Curso CakePHPSlide Aula - Curso CakePHP
Slide Aula - Curso CakePHP
 
Assembly para pc-25paginas
Assembly para pc-25paginasAssembly para pc-25paginas
Assembly para pc-25paginas
 
Linguagem C - Uniões
Linguagem C - UniõesLinguagem C - Uniões
Linguagem C - Uniões
 
CakePHP - Aprendendo a fazer o primeiro bolo
CakePHP - Aprendendo a fazer o primeiro boloCakePHP - Aprendendo a fazer o primeiro bolo
CakePHP - Aprendendo a fazer o primeiro bolo
 
Relações de recorrência
Relações de recorrênciaRelações de recorrência
Relações de recorrência
 
Linguagem C - Estruturas
Linguagem C - EstruturasLinguagem C - Estruturas
Linguagem C - Estruturas
 
CakePHP e o desenvolvimento rápido
CakePHP e o desenvolvimento rápidoCakePHP e o desenvolvimento rápido
CakePHP e o desenvolvimento rápido
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHP
 

Ähnlich wie Dicas para aumentar a performance de um software PHP

PW01 - Introdução a programação em PHPv7
PW01 - Introdução a programação em PHPv7PW01 - Introdução a programação em PHPv7
PW01 - Introdução a programação em PHPv7Silvano Oliveira
 
PHP 5 de Forma Correta e Segura
PHP 5 de Forma Correta e SeguraPHP 5 de Forma Correta e Segura
PHP 5 de Forma Correta e SeguraKleber Silva
 
Curso de PHP Básico ao Avançado
Curso de PHP Básico ao AvançadoCurso de PHP Básico ao Avançado
Curso de PHP Básico ao AvançadoLuiz Junior
 
PHP, Presente e Futuro
PHP, Presente e FuturoPHP, Presente e Futuro
PHP, Presente e FuturoFreedom DayMS
 
Quem tem medo do terminal?
Quem tem medo do terminal?Quem tem medo do terminal?
Quem tem medo do terminal?Rafael Funchal
 
Introdução ao PHP - Criação de sites II
Introdução ao PHP - Criação de sites IIIntrodução ao PHP - Criação de sites II
Introdução ao PHP - Criação de sites IIinfo_cimol
 
Memcached, Gearman e Sphinx
Memcached, Gearman e SphinxMemcached, Gearman e Sphinx
Memcached, Gearman e SphinxElton Minetto
 
Testando Aplicações com PHPT
Testando Aplicações com PHPTTestando Aplicações com PHPT
Testando Aplicações com PHPTSidney Souza
 
Qualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnitQualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnitDiego Tremper
 
Aprendendo a criar plugins para o Wordpress - Richard Barros
Aprendendo a criar plugins para o Wordpress - Richard BarrosAprendendo a criar plugins para o Wordpress - Richard Barros
Aprendendo a criar plugins para o Wordpress - Richard BarrosRichard Barros
 
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
 

Ähnlich wie Dicas para aumentar a performance de um software PHP (20)

PW01 - Introdução a programação em PHPv7
PW01 - Introdução a programação em PHPv7PW01 - Introdução a programação em PHPv7
PW01 - Introdução a programação em PHPv7
 
PHP 5 de Forma Correta e Segura
PHP 5 de Forma Correta e SeguraPHP 5 de Forma Correta e Segura
PHP 5 de Forma Correta e Segura
 
Security & PHP
Security & PHPSecurity & PHP
Security & PHP
 
Introducao ao PHP
Introducao ao PHPIntroducao ao PHP
Introducao ao PHP
 
Curso de PHP Básico ao Avançado
Curso de PHP Básico ao AvançadoCurso de PHP Básico ao Avançado
Curso de PHP Básico ao Avançado
 
PHP, Presente e Futuro
PHP, Presente e FuturoPHP, Presente e Futuro
PHP, Presente e Futuro
 
Quem tem medo do terminal?
Quem tem medo do terminal?Quem tem medo do terminal?
Quem tem medo do terminal?
 
PHP Presente e Futuro
PHP Presente e FuturoPHP Presente e Futuro
PHP Presente e Futuro
 
Introdução ao PHP - Criação de sites II
Introdução ao PHP - Criação de sites IIIntrodução ao PHP - Criação de sites II
Introdução ao PHP - Criação de sites II
 
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
 
PHP(I-Bim).ppt
PHP(I-Bim).pptPHP(I-Bim).ppt
PHP(I-Bim).ppt
 
POG nunca mais - SOLISC
POG nunca mais - SOLISCPOG nunca mais - SOLISC
POG nunca mais - SOLISC
 
Php m18
Php m18Php m18
Php m18
 
Memcached, Gearman e Sphinx
Memcached, Gearman e SphinxMemcached, Gearman e Sphinx
Memcached, Gearman e Sphinx
 
Testando Aplicações com PHPT
Testando Aplicações com PHPTTestando Aplicações com PHPT
Testando Aplicações com PHPT
 
Pep8 pylint
Pep8 pylintPep8 pylint
Pep8 pylint
 
Qualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnitQualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnit
 
Aprendendo a criar plugins para o Wordpress - Richard Barros
Aprendendo a criar plugins para o Wordpress - Richard BarrosAprendendo a criar plugins para o Wordpress - Richard Barros
Aprendendo a criar plugins para o Wordpress - Richard Barros
 
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
 

Dicas para aumentar a performance de um software PHP

  • 1. Dicas para aumentar a performance de um software PHP Almir Neto – almirneto@gmail.com PHP Conference Brazil 2009 http://www.phpconf.com.br Osasco, 27 de Novembro de 2009
  • 2. Dicas para aumentar a performance de um software PHP Grupo de Desenvolvedores PHP de Goiás ● Lista de Discussão ● Troca de Conhecimentos ● Encontros ● Palestras ● Eventos ● http://www.php.org.br ● http://www.gophp.com.br
  • 3. Dicas para aumentar a performance de um software PHP Saída de dados Almir Neto almirneto@gmail.com
  • 4. Dicas para aumentar a performance de um software PHP 1 - echo é mais rápido que print http://www.faqts.com/knowledge_base/vie w.phtml/aid/1/fid/40 Almir Neto almirneto@gmail.com
  • 5. Dicas para aumentar a performance de um software PHP 2 - Aspas simples são mais rápidas com concatenação do que colocar variáveis dentro de aspas duplas Lento: echo "Meu nome é $nome"; Rápido: echo 'Meu nome é ' . $nome; Almir Neto almirneto@gmail.com
  • 6. Dicas para aumentar a performance de um software PHP 3 - Utilizar vários parâmetros com echo é mais rápido que concatenar Lento: echo 'Em ' . $cidade . ' são ' . $horas . ' $horas '; Rápido: echo 'Em ', $cidade, ' são ', $horas, ' $horas '; Almir Neto almirneto@gmail.com
  • 7. Dicas para aumentar a performance de um software PHP Laços de Repetição Almir Neto almirneto@gmail.com
  • 8. Dicas para aumentar a performance de um software PHP Chamadas de funções são lentas! 4 - Não utilize chamadas a funções no bloco de controle do laço de repetição for() Fazendo isso a chamada será feita em cada iteração do laço de repetição Lento: for ( $i = 1; $i < sizeof($array); $i++ ) {} Rápido: $size = sizeof($array); for ( $i = 1; $i < $size; $i++ ) {} Almir Neto almirneto@gmail.com
  • 9. Dicas para aumentar a performance de um software PHP 5 - strlen() é muito lento! Ao checar o tamanho de strings, ao invés de utilizar strlen(), utilize isset se for possível Lento: if(strlen($_POST['nome']) < 5) echo 'O campo nome é menor do que cinco'; Rápido: if(!isset($_POST['nome']{5})) echo 'O campo nome é menor do que cinco'; Almir Neto almirneto@gmail.com
  • 10. Dicas para aumentar a performance de um software PHP 6 - Utilize pré-incremento Pré-incrementar variáveis é 10% mais rápido que pós-incrementar Lento: $contador++; Rápido: ++$contador; Almir Neto almirneto@gmail.com
  • 11. Dicas para aumentar a performance de um software PHP 7 - Incrementar uma variável indefinida é até 10 vezes mais lento que uma pré-inicializada. Almir Neto almirneto@gmail.com
  • 12. Dicas para aumentar a performance de um software PHP 8 - Incrementar uma variável global é mais lento que uma variável local. Almir Neto almirneto@gmail.com
  • 13. Dicas para aumentar a performance de um software PHP 9 - Incrementar um atributo($this->var++) é mais lento que uma variável local. Almir Neto almirneto@gmail.com
  • 14. Dicas para aumentar a performance de um software PHP Variáveis e Funções Almir Neto almirneto@gmail.com
  • 15. Dicas para aumentar a performance de um software PHP 10 - Libere memória Utilize unset() para liberar as variáveis que não for mais utilizar, principalmente grandes arrays Almir Neto almirneto@gmail.com
  • 16. Dicas para aumentar a performance de um software PHP 11 - Utilize require() e include() ao invés de require_once() e include_once() Almir Neto almirneto@gmail.com
  • 17. Dicas para aumentar a performance de um software PHP 12 - Sempre utilize caminho completo ao incluir arquivos Lento: include('noticias.php'); Rápido: include('/var/www/html/noticias.php'); Almir Neto almirneto@gmail.com
  • 18. Dicas para aumentar a performance de um software PHP 13 - Switch é lento. Utilize else if para testes múltiplos. Almir Neto almirneto@gmail.com
  • 19. Dicas para aumentar a performance de um software PHP 14 - Evite funções inúteis Ao invés de utilizar as funções: - php_version(); - php_uname('s'); - php_sapi_name(); Utilize as constantes: - PHP_VERSION - PHP_OS - PHP_SAPI Almir Neto almirneto@gmail.com
  • 20. Dicas para aumentar a performance de um software PHP 15 - Não utilize funções para descobrir se o SO é Windows Rápido e Fácil: $windows = DIRECTORY_SEPARATOR == ''; Almir Neto almirneto@gmail.com
  • 21. Dicas para aumentar a performance de um software PHP 16 - Para descobrir a hora correta com precisão não utilize funções Rápido: $_SERVER['REQUEST_TIME'] Almir Neto almirneto@gmail.com
  • 22. Dicas para aumentar a performance de um software PHP 17 - Evite utilizar expressões regulares Lento: if (preg_match("!string!i", "text")) {} Rápido: if (stripos("text", "string") !== false) {} Almir Neto almirneto@gmail.com
  • 23. Dicas para aumentar a performance de um software PHP 18 - Jamais utilize @ para suprimir erros Internamente o caracter @ faz intensas operações // @action(); $old = ini_set(“error_reporting”, 0); action(); ini_set(“error_reporting”, $old); Almir Neto almirneto@gmail.com
  • 24. Dicas para aumentar a performance de um software PHP 19 - Compare strings com a função que tem essa finalidade Muito Lento: if (preg_match('!^WIN!', PHP_OS)) { if (preg_match('!^WIN!i', PHP_OS)) { Lento: if (substr(PHP_OS, 0, 3) == 'WIN') { if (strtolower(substr(PHP_OS, 0, 3))) == 'win') { Rápido: if (!strncmp(PHP_OS, 'WIN', 3)) { if (!strncasecmp(PHP_OS, 'WIN', 3)) { Almir Neto almirneto@gmail.com
  • 25. Dicas para aumentar a performance de um software PHP 20 - Utilize substr_compare() para comparar pedaços de strings Lento: if (substr($class, -15) != 'text') Rápido if (substr_compare($class, 'text', -15)) Almir Neto almirneto@gmail.com
  • 26. Dicas para aumentar a performance de um software PHP Arrays Almir Neto almirneto@gmail.com
  • 27. Dicas para aumentar a performance de um software PHP 21 - Itens de arrays que são strings devem ser chamados como strings $array = array('chave' => 'valor'); Lento: $array[chave] = 0; Rápido: $array['chave']; O PHP primeiramente procura pela constante chave, e depois converte essa constante para string. Um erro do tipo E_NOTICE é gerado Almir Neto almirneto@gmail.com
  • 28. Dicas para aumentar a performance de um software PHP 22 - Referências podem aumentar a performance $array['b']['c'] = array(); Lento: for($cont = 0; $cont < 5; $cont++) $array['b']['c'][$cont] = $cont; Rápido: $referencia =& $array['b']['c']; for($cont = 0; $cont < 5; $cont++) $referencia[$cont] = $cont; Almir Neto almirneto@gmail.com
  • 29. Dicas para aumentar a performance de um software PHP Orientação a Objetos Almir Neto almirneto@gmail.com
  • 30. Dicas para aumentar a performance de um software PHP 23 - Sempre declare seus métodos como estáticos Almir Neto almirneto@gmail.com
  • 31. Dicas para aumentar a performance de um software PHP 24 - Utilize constantes de classes - São analisadas na compilação, não sobrecarregando a execução. Almir Neto almirneto@gmail.com
  • 32. Dicas para aumentar a performance de um software PHP 25 - Não utilize métodos mágicos - __get() - __set() - __autoload() - __call() Almir Neto almirneto@gmail.com
  • 33. Dicas para aumentar a performance de um software PHP 26 - Métodos de classes filhas são mais rápidos que métodos da classe base Almir Neto almirneto@gmail.com
  • 34. Dicas para aumentar a performance de um software PHP 27 - Somente utilize POO quando for realmente necessário Sistemas POO são ligeiramente mais lentos pois chamadas a métodos e objetos consomem muita memória. Almir Neto almirneto@gmail.com
  • 35. Dicas para aumentar a performance de um software PHP Outras Dicas Almir Neto almirneto@gmail.com
  • 36. Dicas para aumentar a performance de um software PHP 28 - Quando tiver páginas estáticas, não utilize a extensão .php, mas .html Dessa maneira o interpretador do PHP nem é chamado, e os dados são enviados diretamente ao navegador do cliente. Almir Neto almirneto@gmail.com
  • 37. Dicas para aumentar a performance de um software PHP 29 - Escreva suas funções em C O PHP permite a escrita de funções em C e utilizá-las como extensão do PHP. Dessa maneira a velocidade aumenta consideravelmente, pois a função estará compilada no núcleo do PHP. Almir Neto almirneto@gmail.com
  • 38. Dicas para aumentar a performance de um software PHP 30 - Sempre feche as conexões com o banco de dados após a sua utilização Almir Neto almirneto@gmail.com
  • 39. Dicas para aumentar a performance de um software PHP 31 - Utilize uma solução de cache Os scripts PHP são recompilados a cada requisição. Com uma solução de cache essa recompilação não é feita a todo o tempo. Almir Neto almirneto@gmail.com
  • 40. Dicas para aumentar a performance de um software PHP 32 - Utilize um sistema de profile para descobrir onde há gargalos na aplicação Almir Neto almirneto@gmail.com
  • 41. Dicas para aumentar a performance de um software PHP 33 – Use Linux!! Testes utilizando Linux/Apache e Windows/Apache mostram que o Linux chega a ser 7x mais rápido que o Windows para interpretar PHP. http://www.paessler.com/webstress/sample_performance_tests/co mparing_php_script_performance_on_linux_and_windows Almir Neto almirneto@gmail.com
  • 42. Dicas para aumentar a performance de um software PHP Configurações do Servidor Almir Neto almirneto@gmail.com
  • 43. Dicas para aumentar a performance de um software PHP IO de arquivos - Deixe a lista do atributo DirectoryIndex o mais curto possível; - Quando possível desabilite o .htaccess através do atributo AllowOverride none; - Se a gravação de logs for desnecessária, desabilite-os; - Se os logs forem realmente necessários, grave tudo em um só arquivo. Almir Neto almirneto@gmail.com
  • 44. Dicas para aumentar a performance de um software PHP Controle de Saída Habilite Output Buffering em um script com ob_start() ou para todos os scripts com o atributo output_buffering = On Dessa maneira a página é enviada de uma só vez para o sistema operacional, aumentando o tempo de renderização do navegador Almir Neto almirneto@gmail.com
  • 45. Dicas para aumentar a performance de um software PHP Controle de Saída Menor quantidade de saída = Maior performance - Reduz a utilização de recursos do servidor como CPU, HD e Memória - A página carrega mais rapidamente - Diminui o tráfego de dados na rede, que geralmente é o maior gargalo em aplicações. Almir Neto almirneto@gmail.com
  • 46. Dicas para aumentar a performance de um software PHP Conteúdo Estático Para conteúdo dinâmico o Apache é ótimo, porém para conteúdo estático há outros servidores web bem mais rápidos. - lighttpd - boa - tux - thttpd Para conteúdo estático esses servidores chegam a ser 400% mais rápidos que o Apache. Almir Neto almirneto@gmail.com
  • 47. Dicas para aumentar a performance de um software PHP Compressão de Dados A maioria dos navegadores suporta dados comprimidos - Páginas comprimidas são até 8 vezes menores -> Apache 1 - mod_gzip / mod_deflate -> Apache 2 - mod_deflate -> PHP - Em um script: ob_start('ob_gzhandler'); - Nas configurações do PHP: zlib.output_compression = 1 Almir Neto almirneto@gmail.com
  • 48. Dicas para aumentar a performance de um software PHP Configurações do PHP - register_globals = Off - magic_quotes_gpc = Off - expose_php = Off - register_argc_argv = Off - always_populate_raw_post_data = Off - session.use_trans_sid = Off - session.auto_start = Off - session.gc_divisor = 1000 or 10000 Almir Neto almirneto@gmail.com
  • 49. Dicas para aumentar a performance de um software PHP Armazenamento de Sessões - Por padrão o PHP armazena cada sessão em um arquivo separado - Muitos arquivos em um só diretório reduz a velocidade de acesso -> Grave as sessões em vários diretórios session.save_path = "N;path" - Grave as sessões na memória -> apc -> memcache Almir Neto almirneto@gmail.com
  • 50. Dicas para aumentar a performance de um software PHP Bibliografia / Agradecimentos • PHP & Performance: - Ilia Alshanetsky http://talks.php.net/show/perf_tunning • PHP Optimization Tips http://progtuts.info/55/php-optimization-tips/ • Dicas de otimização do servidor: http://phplens.com/lens/php-book/optimizing-debugging-php.php • Artigos da IBM sobre PHP: http://www.ibm.com/developerworks/opensource/top-projects/php.html http://www.ibm.com/developerworks/views/opensource/libraryview.jsp? search_by=make+php+apps+fast • Paessler http://www.paessler.com/webstress/sample_performance_tests/comparing_ php_script_performance_on_linux_and_windows Almir Neto almirneto@gmail.com
  • 51. Dicas para aumentar a performance de um software PHP Fim Almir Neto almirneto@gmail.com