Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Performance de verdade com Phalcon Framework

296 views

Published on

No meio de tantos frameworks PHP já disponíveis, o que este framework pode oferecer de novo que outros mais famosos ainda não tenham?

Published in: Technology
  • Be the first to comment

Performance de verdade com Phalcon Framework

  1. 1. Performance de verdade com Phalcon Framework Jaime da Costa Pereira Neto http://jaimeneto.com contato@jaimeneto.com github.com/jaimeneto
  2. 2. Jaime Neto ➔ Graduado em Telemática pelo CEFET-PB (atual IFPB) ➔ Especialista em Desenvolvimento para Web pela UNIBRATEC (atual Estácio iDez) ➔ Zend Certified Engineer - Zend Framework ➔ Trabalha como Analista de Sistemas no Instituto Chico Mendes de Conservação da Biodiversidade (ICMBio) ➔ Membro do PHP-PB desde os primórdios
  3. 3. Você conhece o Phalcon?
  4. 4. ➔Full stack Framework PHP ➔Lançado em 2012 ➔Versão atual: 3.1.1 ➔Traduzido para 38 idiomas (inclusive Português) ➔Open source (BSD License) ➔Baixo acoplamento Informações
  5. 5. Mas o que ele oferece?
  6. 6. Recursos ➔MVC e HMVC ➔Dependency Injection ➔Rest ➔Autoloader ➔Router ➔ORM ➔Cache ➔Template Engine ➔i18n ➔Forms ➔Flash Messages ➔ACL ➔Sharding ➔Crypt
  7. 7. E qual é o verdadeiro diferencial?
  8. 8. ➔Funciona como uma extensão de servidor web, escrita em linguagem C ◆ Velocidade de execução maior (não precisa processar os arquivos PHP do framework) ◆ Consegue lidar com mais solicitações HTTP por segundo ◆ Quantidade menor de arquivos Performance
  9. 9. E as desvantagens?
  10. 10. ➔Funciona como uma extensão de servidor web, escrita em linguagem C ◆ Dificulta a depuração do código ◆ Pode haver uma curva de aprendizado maior ◆ Caso algo dê errado, você poderá ter que depurar código em C ◆ Pode haver dificuldades para atualização de versão no servidor Desvantagens
  11. 11. Ele faz isso tudo sozinho?
  12. 12. ➔A partir da versão 2.0 o Phalcon passou a utilizar o Zephir ◆ Linguagem de alto nível projetada para facilitar a criação e manutenção de extensões para PHP ◆ Open source (MIT license) ◆ Desenvolvimento com linguagens compiladas perdem na produtividade, mas ganham na performance. A idéia do Zephir é ter o melhor dos dois mundos. ◆ https://zephir-lang.com
  13. 13. E só existe uma forma de usar?
  14. 14. ➔Ferramenta RAD (Rapid Application Development) ◆ Permite criar rapidamente o esqueleto da aplicação ◆ Permite gerar partes da aplicação de acordo com a necessidade (module, controller, model) ◆ Gera CRUD completo baseado nas tabelas do Banco de Dados ◆ Funciona como script de linha de comando ◆ Oferece uma opção visual para ser usada via browser Devtools
  15. 15. phalcon create-project blog simple --enable-webtools phalcon scaffold --table-name posts phalcon create-controller --name users phalcon create-model --name users Devtools ➔Usando a linha de comando (Exemplo) ◆ Criar projeto blog com estrutura simples e ativar webtools ◆ Criar toda estrutura CRUD da tabela posts (controller, model, telas de busca, cadastro, alteração, exclusão, lista) ◆ Criar controller e model de users
  16. 16. Webtools
  17. 17. ➔ 17 sugestões de estrutura ➔ https://github.com/phalcon/mvc simple ├── apps │ ├── controllers │ │ ├── IndexController.php │ │ └── ProductsController.php │ ├── models │ │ └── Products.php │ └── views │ └── products │ └── index.phtml └── public └── index.php MVC multiple ├── apps │ ├── backend │ │ ├── Module.php │ │ ├── controllers │ │ │ ├── IndexController.php │ │ │ ├── LoginController.php │ │ │ └── ProductsController.php │ │ ├── models │ │ │ └── Products.php │ │ └── views │ │ ├── login │ │ │ └── index.phtml │ │ └── products │ │ └── index.phtml │ └── frontend │ ├── Module.php │ ├── controllers │ │ ├── IndexController.php │ │ ├── ProductsController.php │ │ └── UsersController.php │ ├── models │ │ └── Products.php │ └── views │ ├── index │ │ └── index.phtml │ └── products │ └── index.phtml └── public └── index.php multiple-shared-views ├── apps │ ├── common │ │ └── views │ │ ├── index │ │ │ └── index.phtml │ │ ├── index.phtml │ │ └── products │ │ └── index.phtml │ └── modules │ ├── backend │ │ ├── Module.php │ │ ├── controllers │ │ │ ├── IndexController.php │ │ │ └── ProductsController.php │ │ └── models │ │ └── Products.php │ └── frontend │ ├── Module.php │ └── controllers │ └── IndexController.php └── public └── index.php
  18. 18. ➔ Phalcon pode funcionar também como um micro-framework ➔Opção mais adequada para implementar pequenas aplicações, APIs e protótipos ➔O site do phalcon foi feito como micro app: https://github.com/phalcon/website ➔Micro app gerado com Devtools: micro ├── config │ └── config.php ├── index.html ├── public │ └── index.php └── views ├── 404.phtml └── index.phtml Micro
  19. 19. ➔Mecanismo de Templates ◆ Escrito em Zephic/C para PHP ◆ Oferece helpers para facilitar no desenvolvimento das views ◆ Integrado com outros componentes do Phalcon ◆ Pode ser usado separadamente do Phalcon ◆ O phalcon gera cache dos templates para ganho de performance Volt {# app/views/products/show.volt #} {% block last_products %} {% for product in products %} * Name: {{ product.name|e }} {% if product.status == 'Active' %} Price: {{ product.price + product.taxes/100}} {% endif %} {% endfor %} {% endblock %}
  20. 20. Onde isso nos leva?
  21. 21. ➔Consulta única ao banco de dados Fonte: www.techempower.com/benchmarks (16/11/2016) Benchmark
  22. 22. ➔Múltiplas consultas ao banco de dados Fonte: www.techempower.com/benchmarks (16/11/2016) Benchmark
  23. 23. ➔Site Oficial: https://phalconphp.com/pt/ ➔Blog Oficial: https://blog.phalconphp.com ➔Github Oficial: https://github.com/phalcon ➔Listas de sites feitos em phalcon: ◆ https://github.com/phalcon/cphalcon/wiki/Powered-by-Phalcon ◆ https://builtwith.phalconphp.com ➔Sua Escolha (Projeto do PHP-PB) ◆ https://github.com/php-pb/Sua-escolha Links
  24. 24. ➔Projeto Phalcon Brasil ◆ http://phalconbrasil.com.br ◆ Apoio: https://www.soloweb.com.br Convite
  25. 25. Dúvidas? <?php $contato = [ ‘nome’ => ‘Jaime Neto’, ‘email’ => ‘contato@jaimeneto.com’, ‘blog’ => ‘http://jaimeneto.com’, ‘twitter’ => ‘@jaimecpn’ ]; var_dump($contato); ?>
  26. 26. Muito obrigado!

×