Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Phalcon en Español

Phalcon en Español

Phalcon es un framework para PHP escrito en C para obtener un rendimiento inigualable

Phalcon PHP

March 08, 2012
Tweet

More Decks by Phalcon PHP

Other Decks in Programming

Transcript

  1. 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
  2. ¿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
  3. ¿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)  
  4. 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?
  5. ¿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
  6. ¿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.
  7. 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?
  8. Poca  ayuda  al   programador   Rendimiento   Mayor  

    Alta  ayuda  al   programador   Rendimiento   Menor   Alta  ayuda  al   programador   Rendimiento   Mayor   Ayuda/Rendimiento
  9. •  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
  10. [#]  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  
  11. 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  
  12. 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  
  13. Número de Archivos Interpretados por Petición 0   20  

    40   60   80   100   120   115   66   46   36   23   4   Número  Archivos  
  14. 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)  
  15. 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
  16. •  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