Slide 1

Slide 1 text

Phalcon PHP Framework escrito como extensión en C

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

¿Porqué? •  El uso de framework se ha convirtido en obligatorio para el desarrollo PHP profesional •  Los frameworks ofrecen herramientas y facilidades que hacen que nuestro trabajo sea más divertido

Slide 4

Slide 4 text

¿Cómo funciona PHP? APC,  Xcache,   eAccelerator   Interpretar  (ejecutar)  el  árbol  construído  (Zend  Engine)   Revisar  que  el  programa  sea  correcto  a  nivel  sintácCco   (LINT)   Construir  árbol  sintácCco    (consume  memoria)  

Slide 5

Slide 5 text

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?

Slide 6

Slide 6 text

¿Cómo funcionan las extensiones de C? 1.  Las extensiones de C se cargan una sola vez cuando inicia el servidor junto con PHP 2.  La funcionalidad que provee las extensión está lista para usar desde cualquier archivo PHP 3.  El código no se interpreta en las extensiones, porque las extensiones están compiladas para una plataforma específica

Slide 7

Slide 7 text

No debes aprender C, se sigue programando en PHP!

Slide 8

Slide 8 text

¿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, scalffolding, etc.

Slide 9

Slide 9 text

Frameworks Tradicionales Phalcon Interpretación de cientos ó miles de líneas en PHP Sí No Cargar docenas de archivos por petición Sí No Revisar la existencia de clases, funciones, variables cada vez, en cada petición Sí No Realizar optimizaciones de bajo nivel para ganar rendimiento No Sí Cómo Phalcon es más rápido con respecto a los frameworks tradicionales?

Slide 10

Slide 10 text

Poca  ayuda  al   programador   Rendimiento   Mayor   Alta  ayuda  al   programador   Rendimiento   Menor   Alta  ayuda  al   programador   Rendimiento   Mayor   Ayuda/Rendimiento

Slide 11

Slide 11 text

Las comparaciones son odiosas pero necesarias

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

Hello!

 

Slide 14

Slide 14 text

•  Sistema Operativo: Mac OS X Snow Leopard 10.6.8 •  Servidor Web: Apache httpd 2.2.21 •  PHP: 5.3.8 + APC 3.1.9 (Without Xdebug) •  CPU: 3.06 Ghz Intel Core 2 Duo •  Memoria Principal: 4GB 1067 MHz DDR3 •  Disco Duro: 500GB SCSI/SAS HDD Entorno de Pruebas

Slide 15

Slide 15 text

ab  –n  1000  –c  5  http://www.google.com  

Slide 16

Slide 16 text

[#]  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)   Completed  100  requests   Completed  200  requests   Completed  300  requests   Completed  400  requests   Completed  500  requests   Completed  600  requests   Completed  700  requests   Completed  800  requests   Completed  900  requests   Completed  1000  requests   Finished  1000  requests       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  

Slide 17

Slide 17 text

Peticiones atendidas por segundo 0   500   1000   1500   2000   2500   114,49   234,53   552,28   662,61   947,56   2489,26   Framework/Pe+ciones  por  segundo   #  PeCciones/sg  

Slide 18

Slide 18 text

Tiempo Promedio en las 1000 Peticiones 0   1   2   3   4   5   6   7   8   9   8,735   4,264   1,811   1,509   1,055   0,422   Tiempo  Promedio/Todas  las  Pe+ciones   Tiempo  Promedio  sg  

Slide 19

Slide 19 text

Número de Archivos Interpretados por Petición 0   20   40   60   80   100   120   115   66   46   36   23   4   Número  Archivos  

Slide 20

Slide 20 text

Memoria consumida por petición 0   0,5   1   1,5   2   2,5   3   3,5   3,5   3   1,75   1,25   1,1   0,75   Framework/Memoria  (MB)   Memoria  (MB)  

Slide 21

Slide 21 text

1.  HTTP Response – Phalcon_Response 2.  HTTP Request – Phalcon_Request 3.  Controller Front – Phalcon_Controller_Front 4.  Controller - – Phalcon_Response 5.  Views – Phalcon_View 6.  Cache – Phalcon_Cache 7.  Session Handling – Phalcon_Session 8.  Filter and Sanitize – Phalcon_Filter 9.  Flash Notifications – Phalcon_Flash 10.  Scaffolding – Phalcon_Builder 11.  Config – Phalcon_Config 12.  Scripts – Phalcon_Script 13.  Database – Phalcon_Db 14.  Logging – Phacon_Logger 15.  Templating – Phalcon_Tag Componentes

Slide 22

Slide 22 text

•  ORM (Object-Relational-Mapper) •  Meta-Datos (Memoria, Sesión, APC) •  Validadores (Tipos, Regex, Únicos) •  Relaciones Unidireccionales y Bidireccionales •  Llaves foráneas virtuales •  Generadores •  Transacciones •  Generadores de Modelos •  Eventos de Modelos Phalcon/ORM

Slide 23

Slide 23 text

Gracias! hWp://phalconphp.com     @phalconphp