Your SlideShare is downloading. ×
0
Andres Gutierrez
Andres Gutierrez
Andres Gutierrez
Andres Gutierrez
Andres Gutierrez
Andres Gutierrez
Andres Gutierrez
Andres Gutierrez
Andres Gutierrez
Andres Gutierrez
Andres Gutierrez
Andres Gutierrez
Andres Gutierrez
Andres Gutierrez
Andres Gutierrez
Andres Gutierrez
Andres Gutierrez
Andres Gutierrez
Andres Gutierrez
Andres Gutierrez
Andres Gutierrez
Andres Gutierrez
Andres Gutierrez
Andres Gutierrez
Andres Gutierrez
Andres Gutierrez
Andres Gutierrez
Andres Gutierrez
Andres Gutierrez
Andres Gutierrez
Andres Gutierrez
Andres Gutierrez
Andres Gutierrez
Andres Gutierrez
Andres Gutierrez
Andres Gutierrez
Andres Gutierrez
Andres Gutierrez
Andres Gutierrez
Andres Gutierrez
Andres Gutierrez
Andres Gutierrez
Andres Gutierrez
Andres Gutierrez
Andres Gutierrez
Andres Gutierrez
Andres Gutierrez
Andres Gutierrez
Andres Gutierrez
Andres Gutierrez
Andres Gutierrez
Andres Gutierrez
Andres Gutierrez
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Andres Gutierrez

1,454

Published on

Ponencia en Colombia 3.0

Ponencia en Colombia 3.0

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,454
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
17
Comments
0
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. PhalconPHP Framework escrito como extensión en C
  • 2. Objetivo•  Construir un verdadero framework de alto rendimiento para PHP que sea fácil de usar al mismo tiempo•  Facilitar y aumentar la escalabilidad de proyectos en PHP sin aumentar la complejidad
  • 3. ¿Porqué?•  El uso de framework se ha convertido en obligatorio para el desarrollo PHP profesional•  Los frameworks ofrecen herramientas y facilidades que hacen que nuestro trabajo sea más divertido
  • 4. ¿Cómo funciona PHP? Revisar  que  el  programa  sea  correcto  a  nivel  sintácDco   (LINT)  APC,  Xcache,  eAccelerator   Construir  árbol  sintácDco    (consume  memoria)   Interpretar  (ejecutar)  el  árbol  construído  (bytecode)  (Zend  Engine)  
  • 5. Rendimiento en frameworks tradicionales•  Muchos archivos con clases y funciones son leídos en cada petición, la continua lectura de disco puede impactar el rendimiento•  La totalidad del código proporcionada por estos frameworks es interpretada en cada petición•  El código de un framework permanece igual entre una petición y otra, ¿porqué cargarlo e interpretarlo una y otra vez?
  • 6. ¿Cómo funcionan las extensiones de C?1.  Las extensiones de C se cargan una sola vez cuando inicia el servidor junto con PHP2.  La funcionalidad que provee las extensión está lista para usar desde cualquier archivo PHP3.  El código no se interpreta en las extensiones, porque las extensiones están compiladas para una plataforma específica
  • 7. No debes aprender C, se sigue programando en PHP!
  • 8. ¿Qué ofrece Phalcon?•  Es un framework por componentes y full stack al tiempo, cualquier componente se puede usar sin depender de otros o desarrollar una aplicación completa con él•  Phalcon está directamente engranado con PHP accediendo directamente a sus recursos internos•  Generación de código, helpers, template engine, scaffolding, etc.
  • 9. ¿Cómo Phalcon es más rápido con respecto a los frameworks tradicionales? Frameworks Tradicionales PhalconInterpretación de cientos ó Sí Nomiles de líneas en PHPCargar docenas de Sí Noarchivos por peticiónRevisar la existencia de Sí Noclases, funciones,variables cada vez, en cadapeticiónRealizar optimizaciones de No Síbajo nivel para ganarrendimiento
  • 10. Ayuda/RendimientoPoca  ayuda  al  programador   Alta  ayuda  al   programador   Alta  ayuda  al   programador  Rendimiento   Mayor   Rendimiento   Mayor   Rendimiento   Menor  
  • 11. Las comparaciones son odiosas pero necesarias
  • 12. MVC  Benchmark  
  • 13. ¿Qué se mide con un “Hola Mundo”? Tiempo  que  tarda  en  iniciar  el  framework   Lógica  de  Aplicación  (Hello!)   Tiempo  que  tarda  en  finalizar  la  peDción  
  • 14. Entorno de Pruebas•  Sistema Operativo: Mac  OS  X  Lion  10.7.4 Servidor Web: Apache httpd 2.2.22•  PHP: 5.3.15 + APC 3.1.13 (Without Xdebug)•  CPU: 3.06 Ghz Intel Core 2 Duo•  Memoria Principal: 4GB  1333  MHz  DDR3•  Disco Duro: 500GB SCSI/SAS HDD
  • 15. ab  –n  1000  –c  5  http://localhost/bench/phalcon/say/hello  
  • 16. [#]  ab  -­‐n  1000  -­‐c  5  http://localhost/bench/phalcon/?_url=say/hello  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  localhost  (be  patient)    Server  Software:                Apache/2.2.21  Server  Hostname:                localhost  Server  Port:                        80    Document  Path:                    /bench/phalcon/?_url=say/hello  Document  Length:                16  bytes    Concurrency  Level:            5  Time  taken  for  tests:      0.402  seconds  Complete  requests:            1000  Failed  requests:                0  Write  errors:                      0  Total  transferred:            187000  bytes  HTML  transferred:              16000  bytes  Requests  per  second:        2489.26  [#/sec]  (mean)  Time  per  request:              2.009  [ms]  (mean)  Time  per  request:              0.402  [ms]  (mean,  across  all  concurrent  requests)  Transfer  rate:                    454.58  [Kbytes/sec]  received    Connection  Times  (ms)                              min    mean[+/-­‐sd]  median      max  Connect:                0        0      0.3            0              4  Processing:          1        2      1.5            1            36  Waiting:                0        1      1.4            1            30  Total:                    1        2      1.6            2            37    Percentage  of  the  requests  served  within  a  certain  time  (ms)      50%            2      66%            2      75%            2      80%            2      90%            3      95%            4      98%            5      99%            7    100%          37  (longest  request)  
  • 17. Peticiones atendidas por segundo2500   2368  2000  1500  1000   862   727   762   #  PeDciones/sg   568   541   424   500   280   324   0  
  • 18. Tiempo Promedio en las 1000 Peticiones 3,5  3,5   3   3  2,5   2,3   2   1,8   1,7  1,5   1,3   1,2   1,2   Tiempo  Promedio  sg   1   0,4  0,5   0  
  • 19. Número de Archivos Interpretados por Petición 117  120  100   80   66   60   46   36   Número  Archivos   40   30   23   20   4   0  
  • 20. Memoria consumida por petición 3,5  3,5   3   3  2,5   2   1,75  1,5   1,25   1,1   1   Memoria  (MB)   1   0,75  0,5   0  
  • 21. ORM Benchmarkmysql>  desc  products;  +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+  |  Field                        |  Type                          |  Null  |  Key  |  Default  |  Extra                    |  +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+  |  id                              |  int(10)  unsigned  |  NO      |  PRI  |  NULL        |  auto_increment  |  |  product_types_id  |  int(10)  unsigned  |  NO      |  MUL  |  NULL        |                                |  |  name                          |  varchar(70)            |  NO      |          |  NULL        |                                |  |  price                        |  decimal(16,2)        |  NO      |          |  NULL        |                                |  |  active                      |  char(1)                    |  YES    |          |  NULL        |                                |  +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+  5  rows  in  set  (0.00  sec)  
  • 22. Inserción de 10 registros (Tiempo Total) 500 peticiones/10 concurrentes 5,922  6,000  5,000  4,000   2,375   Tiempo  Total/sg  3,000  2,000  1,000  0,000   Doctrine  2   Phalcon  
  • 23. Inserción de 10 registros (Memoria Petición) 500 peticiones/10 concurrentes 7,424  8,000  7,000  6,000  5,000   Memoria  (MB)  4,000  3,000  2,000   0,728  1,000  0,000   Doctrine  2   Phalcon  
  • 24. Consultar e imprimir 10 registros (Tiempo Total) 500 peticiones/10 concurrentes2,500   2,217  2,000  1,500   Tiempo/sg  1,000   0,467  0,500  0,000   Doctrine  2   Phalcon  
  • 25. Consultar e imprimir 10 registros (Memoria Petición) 500 peticiones/10 concurrentes 9,984  10,000   9,000   8,000   7,000   6,000   Memoria  (MB)   5,000   4,000   3,000   2,000   0,768   1,000   0,000   Doctrine  2   Phalcon  
  • 26. Micro Framework: Peticiones atendidas por segundo3000   2551   2368  2500  2000  1500   #  PeDciones/sg   1134  1000   448   500   0   Silex   Slim   Phalcon   PHP  
  • 27. ¿Es posible desarrollar una aplicación solamente usando Phalcon?
  • 28. Áreas de Acción•  Full Stack Frameworks (Cake, Yii, Symfony, Zend)•  Componentes ligeramente acoplados (Symfony/Zend)•  Micro Frameworks (Slim, Silex, Limonade)•  ORM (Object Relational Mappers) (Doctrine, Propel)•  ODM (Object Document Mappers) (Doctrine)•  Template Engines (Twig, Mustache, Smarty)
  • 29. Componentes1.  Dependency Injection/Inversion of Control (DI)2.  HTTP Environment Request/Response3.  MVC (Models/Views/Controllers)4.  Cache (Memcached, Files, APC, Mongo)5.  Routing6.  Events Manager7.  Session Handling8.  Filter and Sanitize9.  Flash Notifications10.  Scaffolding11.  Configuration12.  Database13.  Logging14.  Template Engine (Volt)15.  Multi-lingual apps16.  Universal Class Loader17.  Access Control Lists (ACL)
  • 30. Phalcon/ORM•  ORM (Object-Relational-Mapper) •  Meta-Datos (Memoria, Sesión, APC, Files) •  Validadores (Tipos, Regex, Únicos) •  Relaciones Unidireccionales y Bidireccionales •  Llaves foráneas virtuales •  Transacciones •  Generadores de Modelos •  Eventos/Hooks de Modelos •  Migraciones •  PHQL (Phalcon Query Language) •  Behaviors
  • 31. Phalcon/DB•  MySQL•  PostgreSQL•  SQLite
  • 32. Veamos un poco de código :]
  • 33. Al estar escrito en C, ¿cómoencuentro fácilmente un error?
  • 34. Implementaciones de PHP 4%   Zend  Engine   Hip  Hop/Quercus/ WebSmash/Phalanger   96%  
  • 35. Soy un programador perezoso,¿Cómo Phalcon me ayuda a escribir menos código?
  • 36. hhp://try.phalconphp.com  
  • 37. Gracias! <3 hhp://phalconphp.com    Síguenos  en  Twiher:  @phalconphp  

×