Dicas para aumentar a performance de um software PHP

  • 4,356 views
Uploaded on

Evitar utilizar funções em laços de repetição, utilizar aspas simples quando a string não precisa ser interpretada, utilizar um bom sistema de cache... Essas e outras várias atitudes podem significar …

Evitar utilizar funções em laços de repetição, utilizar aspas simples quando a string não precisa ser interpretada, utilizar um bom sistema de cache... Essas e outras várias atitudes podem significar um grande ganho de performance em softwares desenvolvidos em PHP e colaborar para o sucesso de um projeto.

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
No Downloads

Views

Total Views
4,356
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
116
Comments
2
Likes
2

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 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