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