SlideShare uma empresa Scribd logo
1 de 30
Baixar para ler offline
Como facer PHP
  fodidamente rápido
Fran Diéguez – OpenHost && Mabishu
Sobre min




      Este traballo ten a licenza Creative Commons Atribución 3.0.
2     Para ver unha copia da licenza visite http://tinyurl.com/2v352h
Fran Diéguez
    ●
        Traballo en OpenHost e na OSL da USC
    ●
        Desenvolvedor web de aplicativos con altas
        taxas de usuarios
        ●
            Traballei durante 3 anos con Ruby on Rails
        ●
            Agora mesmo estou traballando nunha plataforma
            editorial dixital para periódicos desenvolvida con
            PHP (Zend, Smarty, Doctrine)
    ●
        Estou perxudicado (as festas pérdenme)


             Este traballo ten a licenza Creative Commons Atribución 3.0.
3            Para ver unha copia da licenza visite http://tinyurl.com/2v352h
Que imos ver?
    ●
        Consideracións que poucos saben e como
        atallalas
    ●
        Sistemas de cache
    ●
        Sistemas de plantillas: Smarty 3 (non 2)
    ●
        Clustering




           Este traballo ten a licenza Creative Commons Atribución 3.0.
4          Para ver unha copia da licenza visite http://tinyurl.com/2v352h
Consideracións que poucos saben
    e como atallalas




      Este traballo ten a licenza Creative Commons Atribución 3.0.
5     Para ver unha copia da licenza visite http://tinyurl.com/2v352h
Principais lugares de bottlenecks
    ●
        Sistemas de ficheiros
    ●
        Conexións simultáneas
    ●
        Memoria compartida
    ●
        Xestión de procesos do sistema
    ●
        Conexión a outros servidores




           Este traballo ten a licenza Creative Commons Atribución 3.0.
6          Para ver unha copia da licenza visite http://tinyurl.com/2v352h
Sistemas de ficheiros
    ●
        Se usades Linux nos vosos servers tedes que
        ter en conta as restricións dos FS:
        ●
            Sempre son problemas derivados do sistema de
            nodos-i
        ●
            Normalmente os sistemas de ficheiros funcionan
            ben até os 1024 elementos dentro dun mesmo
            nodo-i
        ●
            Polo que sempre tentade que dentro dun cartafol
            haxa como máximo 1024 elementos
            –    Se vos pasades empregade aniñado de cartafoles.

             Este traballo ten a licenza Creative Commons Atribución 3.0.
7            Para ver unha copia da licenza visite http://tinyurl.com/2v352h
Este traballo ten a licenza Creative Commons Atribución 3.0.
8   Para ver unha copia da licenza visite http://tinyurl.com/2v352h
Problema de conexións
simultáneas
●   Se temos poucas conexións
    (usuarios concurrentes) o noso
    script PHP usará menos memoria
    compartida
●   Se temos moitas conexións
    simultáneas PHP non xestiona
    nada ben a memoria compartida e
    pode ocasionar perdas de
    rendemento incríbeis
●   SOLUCIÓN:
    ●   Usar sistemas de memoria
        compartida externa
    ●   Cachear a estáticos ou OpCode
    ●   Utilizar métodos de abstracción
        para usar servizos de terceiros

            Este traballo ten a licenza Creative Commons Atribución 3.0.
9           Para ver unha copia da licenza visite http://tinyurl.com/2v352h
Como simulamos altas taxas de
usuarios?
 ●
     Hai moitas ferramentas
     ●
         Ab do Proxecto Apache
     ●
         Httperf de HP, un manual moi chulo
     ●
         ...
 ●
     PROBLEMA:
     ●
         Non representan de forma fidedigna as accións de
         usuarios (useflow completo do usuario)


           Este traballo ten a licenza Creative Commons Atribución 3.0.
10         Para ver unha copia da licenza visite http://tinyurl.com/2v352h
Servidores de aplicativo vs
servidores de estáticos
 ●
     É moi importante ter ben diferenciados os
     servidores que serven ficheiros logo dun
     procesado (aplicativo) dos que son servidores
     de estáticos
     ●
         Eu recomendo que estean en distintas máquinas
         cando o proxecto creza dabondo
     ●
         Podedes empregar o que queirades pero:
         –    Apache: como server de aplicacións co módulo
              mod_php
         –    Nginx: como server de estáticos

          Este traballo ten a licenza Creative Commons Atribución 3.0.
11        Para ver unha copia da licenza visite http://tinyurl.com/2v352h
Coding Standards
 ●
     Non teñen relación directa co rendemento da
     app
     ●
         Pero fallos pequenos poden incrementar as
         chamadas internas do parser de PHP
 ●
     Exemplo:
     ●
         Eliminando os ?> dos controladores e modelos
         obrigas a PHP a non pechar os streams de código
         o cal implica un incremento de rendemento dun
         0,4 % do script final.

          Este traballo ten a licenza Creative Commons Atribución 3.0.
12        Para ver unha copia da licenza visite http://tinyurl.com/2v352h
Máis exemplos
●    Uso das funcións de expresións regulares de Perl
     ●   Preg_replace
     ●   Preg_match
     ●   Etc.
●    Uso de include vs require (*once)
●    Outro exemplo chorra:
         –   Impresión de texto con:
                ●   Print e non echo
                ●   Usade a nomenclatura “{$nome_do_usuario}” e non “$nome_do_usuario”
●    O mito de que o uso de Orientación a obxectos é máis lento
     xa non se cumpre
     ●   A partires de PHP 5.3 isto mellorou moitísimo
             Este traballo ten a licenza Creative Commons Atribución 3.0.
13           Para ver unha copia da licenza visite http://tinyurl.com/2v352h
Standard Public Library
●    Se queredes facer que PHP vaia máis rápido
     ●   POR FAVOR USADE O SPL DE PHP
     ●   Son APIs escritas en C e compiladas en lingua máquina polo que
         vai ir moi rápido
●    Ten API para moitas das tarefas comúns cando queremos
     acceder a elementos do sistema a baixo nivel:
     ●   Iteradores de Obxectos, Arrays, Ficheiros, Directorios
     ●   Parseo de XML optimizado
     ●   Sistema de excepcións máis extenso que o incluído no core.
●    Vantaxe: todo orientado a obxectos


           Este traballo ten a licenza Creative Commons Atribución 3.0.
14         Para ver unha copia da licenza visite http://tinyurl.com/2v352h
Usade proffiling
●    O proffiling é analizar as chamadas internas da linguaxe e o uso de
     memoria de cada unha delas
●    Para PHP usade Xdebug, basicamente porque non hai outro
     ●   Permite proffiling e debugging de forma moi cómoda
●    Para consultar os resultados empregade Kcachegrind ou webgrind.
●    Se sabedes interpretar de forma correcta os resultados podedes
     saber onde están os bottlenecks nos vosos apps.




            Este traballo ten a licenza Creative Commons Atribución 3.0.
15          Para ver unha copia da licenza visite http://tinyurl.com/2v352h
En resumo, atacamos así
 ●
     Gardando todo en memoria compartida
 ●
     Crear estáticos
 ●
     Balancear carga entre varios servers
     ●
         Sistemas cache distribuídas
 ●
     Problema de conexións simultáneas




          Este traballo ten a licenza Creative Commons Atribución 3.0.
16        Para ver unha copia da licenza visite http://tinyurl.com/2v352h
Sistemas de caché




       Este traballo ten a licenza Creative Commons Atribución 3.0.
17     Para ver unha copia da licenza visite http://tinyurl.com/2v352h
Sistemas de caché
 ●
     Hai dous tipos
     ●
         Sistemas de caché interna
     ●
         Sistemas de caché externa
 ●
     Para cada un salientamos
     ●
         Interna: APC
     ●
         Externa: Memcache




          Este traballo ten a licenza Creative Commons Atribución 3.0.
18        Para ver unha copia da licenza visite http://tinyurl.com/2v352h
Sistemas de caché e II
 ●
     O realmente interesante é ter unha
     infraestrutura escalonada de sistema de Cache
     ●
         Zend Framework fornece un sistema de varias capas
         onde podes aniñar distintos sistemas de caché
         segundo a súa velocidade: Zend_Cache
         –   APC
         –   Memcache
         –   Base de datos
         –   Cache de sistema de ficheiros
         –   Personalizadas


          Este traballo ten a licenza Creative Commons Atribución 3.0.
19        Para ver unha copia da licenza visite http://tinyurl.com/2v352h
APC (Alternative PHP Caché)
 ●   A partir de PHP 5.4 será
     incluído no paquete
     base de PHP polo que
     podedes empregalo sen
     instalación algunha
     ●   Para todo lo demás:
         usade pecl
 ●   Api moi sinxela:
     ●   apc_exists()
     ●   apc_add()
     ●   apc_fetch()
           Este traballo ten a licenza Creative Commons Atribución 3.0.
20         Para ver unha copia da licenza visite http://tinyurl.com/2v352h
Memcache
●    Agnóstico á lingua de programación
●    Sistema totalmente distribuído
●    Permite ter un banco de memoria (pares chave-valor)
     do tamaño que queirades nunha máquina externa que
     comparte recursos a varios servers
●    Permite multiserver e multiclientes
●    Api moi sinxela:
     ●   Memcache::connect, conexión inicial ao porto 11211
     ●   Memcache::set
     ●   Memcache::get
           Este traballo ten a licenza Creative Commons Atribución 3.0.
21         Para ver unha copia da licenza visite http://tinyurl.com/2v352h
Sistemas de plantillas




       Este traballo ten a licenza Creative Commons Atribución 3.0.
22     Para ver unha copia da licenza visite http://tinyurl.com/2v352h
Sistemas de plantillas
 ●
     Hai moita controversia co sistema de plantillas
     ●
         Moitas persoas prefiren empregar PHP misturado
         con HTML
     ●
         Outras moitas empregan un sistema de plantillas
 ●
     Todo depende das vosas necesidades porén eu
     prefiro empregar un sistema de plantillas
     ●
         Vantaxes: sistemas de caching e compilación a
         opcode das plantillas, etc, etc, etc
     ●
         Desvantaxes: obrigan a aprender unha nova sintaxe
         e distintas API.
          Este traballo ten a licenza Creative Commons Atribución 3.0.
23        Para ver unha copia da licenza visite http://tinyurl.com/2v352h
Smarty 3
 ●
     Para min e a unha solución definitiva
 ●
     Baixo as miñas probas
     ●
         Incremento de rendemento do 30% fronte a
         Smarty 2
     ●
         Incremento de rendemento do 15% fronte a uso
         de PHP embembed
         –    Logo de que Smarty compile as vistas a PHP
     ●
         Incremento de rendemento do 40% fronte a uso
         de PHP Embembed
         –    Logo que Smarty compile as vistas a OpCode
          Este traballo ten a licenza Creative Commons Atribución 3.0.
24        Para ver unha copia da licenza visite http://tinyurl.com/2v352h
Smarty 3 características
●    Olvidádevos de Smarty 2 (cousa do pasado, 3 meses)
●    Características:
     ●   Template inheritance
     ●   Sistema de cache por grupos
     ●   Compilación a OpCode
     ●   Compilación a PHP optimizado
     ●   Totalmente extensíbel
     ●   Facilita a reutilización de partials
     ●   Sistema bastante bo de plugins (non orientado a obxectos!!!)


           Este traballo ten a licenza Creative Commons Atribución 3.0.
25         Para ver unha copia da licenza visite http://tinyurl.com/2v352h
Caché, caché, caché
 ●
     Para o caso das plantillas con partes dinámicas
     ●
         Tipico: Hola {$nome_do_usuario}
     ●
         Tentade compilar a OpCode con servers
         especializados como Zend Server (aviso $$$)
 ●
     Para o caso de plantillas estáticas
     ●
         Compilade todo a html estático escribindo en
         filesystem ou memcache
     ●
         Incluso podedes empregar este sistema para
         cachear fragmentos (partials)

          Este traballo ten a licenza Creative Commons Atribución 3.0.
26        Para ver unha copia da licenza visite http://tinyurl.com/2v352h
Clustering




      Este traballo ten a licenza Creative Commons Atribución 3.0.
27    Para ver unha copia da licenza visite http://tinyurl.com/2v352h
Sistemas de clustering
 ●
     Sodes desenvolvedores, non perdades tempo
     en administración de sistemas
 ●
     O mellor é empregar sistemas que poidan
     autoescalar
     ●
         Eu recomendo EC2 combinado con S3 de Amazon
     ●
         E se o presuposto o permite empregade Akamai.




          Este traballo ten a licenza Creative Commons Atribución 3.0.
28        Para ver unha copia da licenza visite http://tinyurl.com/2v352h
Apps na nube
 ●
     Como fago que o meu App poida empregar
     clustering ou poida correr na nube?
     ●
         Realmente non cambia moito da infraestrutura
         que tes sempre que empregues as anteriores
         suxestións
         –    Caches distribuídas
         –    Conversión a estáticos e Opcode
         –    Diferencia de servidores de aplicativos
              vs servidores de estáticos



          Este traballo ten a licenza Creative Commons Atribución 3.0.
29        Para ver unha copia da licenza visite http://tinyurl.com/2v352h
Preguntas




       Este traballo ten a licenza Creative Commons Atribución 3.0.
30     Para ver unha copia da licenza visite http://tinyurl.com/2v352h

Mais conteúdo relacionado

Semelhante a Como facer PHP fodidamente rápido

Estado da tradución ao galego do proxecto Ubuntu
Estado da tradución ao galego do proxecto UbuntuEstado da tradución ao galego do proxecto Ubuntu
Estado da tradución ao galego do proxecto UbuntuFran Diéguez
 
Arquitecturas e esquemas de traballo en Galician Transators Group of GNOME
Arquitecturas e esquemas de traballo en Galician Transators Group of GNOMEArquitecturas e esquemas de traballo en Galician Transators Group of GNOME
Arquitecturas e esquemas de traballo en Galician Transators Group of GNOMEFran Diéguez
 
Estado da tradución ao galego do proxecto opensuse
Estado da tradución ao galego do proxecto opensuseEstado da tradución ao galego do proxecto opensuse
Estado da tradución ao galego do proxecto opensuseFran Diéguez
 
Estado da tradución ao galego do proxecto GNOME
Estado da tradución ao galego do proxecto GNOMEEstado da tradución ao galego do proxecto GNOME
Estado da tradución ao galego do proxecto GNOMEFran Diéguez
 
Obradoiro Drupal de 0 a 100 - Vigo 2015
Obradoiro Drupal de 0 a 100 - Vigo 2015Obradoiro Drupal de 0 a 100 - Vigo 2015
Obradoiro Drupal de 0 a 100 - Vigo 2015Alberto Permuy Leal
 
Entendendo Internet
Entendendo InternetEntendendo Internet
Entendendo InternetMaría L
 
Dev con Joomla componentes modulos plugins
Dev con Joomla componentes modulos pluginsDev con Joomla componentes modulos plugins
Dev con Joomla componentes modulos pluginsousli07
 
O software libre na sociedade actual
O software libre na sociedade actualO software libre na sociedade actual
O software libre na sociedade actualousli07
 
Tradución de Aplicacións Software Ceibe
Tradución de Aplicacións Software CeibeTradución de Aplicacións Software Ceibe
Tradución de Aplicacións Software CeibeFran Diéguez
 
Primeiros Pasos Para O Manexo Do Software Libre
Primeiros Pasos Para O Manexo Do Software LibrePrimeiros Pasos Para O Manexo Do Software Libre
Primeiros Pasos Para O Manexo Do Software LibreAmador Loureiro Blanco
 
Presentación de redes
Presentación de redesPresentación de redes
Presentación de redesBorja1235
 

Semelhante a Como facer PHP fodidamente rápido (20)

Estado da tradución ao galego do proxecto Ubuntu
Estado da tradución ao galego do proxecto UbuntuEstado da tradución ao galego do proxecto Ubuntu
Estado da tradución ao galego do proxecto Ubuntu
 
WPCompostela
WPCompostelaWPCompostela
WPCompostela
 
Arquitecturas e esquemas de traballo en Galician Transators Group of GNOME
Arquitecturas e esquemas de traballo en Galician Transators Group of GNOMEArquitecturas e esquemas de traballo en Galician Transators Group of GNOME
Arquitecturas e esquemas de traballo en Galician Transators Group of GNOME
 
131119 almacenamento nube_owncloud
131119 almacenamento nube_owncloud131119 almacenamento nube_owncloud
131119 almacenamento nube_owncloud
 
Estado da tradución ao galego do proxecto opensuse
Estado da tradución ao galego do proxecto opensuseEstado da tradución ao galego do proxecto opensuse
Estado da tradución ao galego do proxecto opensuse
 
Estado da tradución ao galego do proxecto GNOME
Estado da tradución ao galego do proxecto GNOMEEstado da tradución ao galego do proxecto GNOME
Estado da tradución ao galego do proxecto GNOME
 
Obradoiro Drupal de 0 a 100 - Vigo 2015
Obradoiro Drupal de 0 a 100 - Vigo 2015Obradoiro Drupal de 0 a 100 - Vigo 2015
Obradoiro Drupal de 0 a 100 - Vigo 2015
 
As tic na aula
As tic na aulaAs tic na aula
As tic na aula
 
Entendendo Internet
Entendendo InternetEntendendo Internet
Entendendo Internet
 
Dev con Joomla componentes modulos plugins
Dev con Joomla componentes modulos pluginsDev con Joomla componentes modulos plugins
Dev con Joomla componentes modulos plugins
 
Software libre
Software libreSoftware libre
Software libre
 
O software libre na sociedade actual
O software libre na sociedade actualO software libre na sociedade actual
O software libre na sociedade actual
 
Tradución de Aplicacións Software Ceibe
Tradución de Aplicacións Software CeibeTradución de Aplicacións Software Ceibe
Tradución de Aplicacións Software Ceibe
 
Drupal2
Drupal2Drupal2
Drupal2
 
Primeiros Pasos Para O Manexo Do Software Libre
Primeiros Pasos Para O Manexo Do Software LibrePrimeiros Pasos Para O Manexo Do Software Libre
Primeiros Pasos Para O Manexo Do Software Libre
 
Sistemas operativos 2
Sistemas operativos 2Sistemas operativos 2
Sistemas operativos 2
 
Traballo
Traballo Traballo
Traballo
 
Curso CDA: Drupal API
Curso CDA: Drupal APICurso CDA: Drupal API
Curso CDA: Drupal API
 
Ponencia Drupal
Ponencia DrupalPonencia Drupal
Ponencia Drupal
 
Presentación de redes
Presentación de redesPresentación de redes
Presentación de redes
 

Como facer PHP fodidamente rápido

  • 1. Como facer PHP fodidamente rápido Fran Diéguez – OpenHost && Mabishu
  • 2. Sobre min Este traballo ten a licenza Creative Commons Atribución 3.0. 2 Para ver unha copia da licenza visite http://tinyurl.com/2v352h
  • 3. Fran Diéguez ● Traballo en OpenHost e na OSL da USC ● Desenvolvedor web de aplicativos con altas taxas de usuarios ● Traballei durante 3 anos con Ruby on Rails ● Agora mesmo estou traballando nunha plataforma editorial dixital para periódicos desenvolvida con PHP (Zend, Smarty, Doctrine) ● Estou perxudicado (as festas pérdenme) Este traballo ten a licenza Creative Commons Atribución 3.0. 3 Para ver unha copia da licenza visite http://tinyurl.com/2v352h
  • 4. Que imos ver? ● Consideracións que poucos saben e como atallalas ● Sistemas de cache ● Sistemas de plantillas: Smarty 3 (non 2) ● Clustering Este traballo ten a licenza Creative Commons Atribución 3.0. 4 Para ver unha copia da licenza visite http://tinyurl.com/2v352h
  • 5. Consideracións que poucos saben e como atallalas Este traballo ten a licenza Creative Commons Atribución 3.0. 5 Para ver unha copia da licenza visite http://tinyurl.com/2v352h
  • 6. Principais lugares de bottlenecks ● Sistemas de ficheiros ● Conexións simultáneas ● Memoria compartida ● Xestión de procesos do sistema ● Conexión a outros servidores Este traballo ten a licenza Creative Commons Atribución 3.0. 6 Para ver unha copia da licenza visite http://tinyurl.com/2v352h
  • 7. Sistemas de ficheiros ● Se usades Linux nos vosos servers tedes que ter en conta as restricións dos FS: ● Sempre son problemas derivados do sistema de nodos-i ● Normalmente os sistemas de ficheiros funcionan ben até os 1024 elementos dentro dun mesmo nodo-i ● Polo que sempre tentade que dentro dun cartafol haxa como máximo 1024 elementos – Se vos pasades empregade aniñado de cartafoles. Este traballo ten a licenza Creative Commons Atribución 3.0. 7 Para ver unha copia da licenza visite http://tinyurl.com/2v352h
  • 8. Este traballo ten a licenza Creative Commons Atribución 3.0. 8 Para ver unha copia da licenza visite http://tinyurl.com/2v352h
  • 9. Problema de conexións simultáneas ● Se temos poucas conexións (usuarios concurrentes) o noso script PHP usará menos memoria compartida ● Se temos moitas conexións simultáneas PHP non xestiona nada ben a memoria compartida e pode ocasionar perdas de rendemento incríbeis ● SOLUCIÓN: ● Usar sistemas de memoria compartida externa ● Cachear a estáticos ou OpCode ● Utilizar métodos de abstracción para usar servizos de terceiros Este traballo ten a licenza Creative Commons Atribución 3.0. 9 Para ver unha copia da licenza visite http://tinyurl.com/2v352h
  • 10. Como simulamos altas taxas de usuarios? ● Hai moitas ferramentas ● Ab do Proxecto Apache ● Httperf de HP, un manual moi chulo ● ... ● PROBLEMA: ● Non representan de forma fidedigna as accións de usuarios (useflow completo do usuario) Este traballo ten a licenza Creative Commons Atribución 3.0. 10 Para ver unha copia da licenza visite http://tinyurl.com/2v352h
  • 11. Servidores de aplicativo vs servidores de estáticos ● É moi importante ter ben diferenciados os servidores que serven ficheiros logo dun procesado (aplicativo) dos que son servidores de estáticos ● Eu recomendo que estean en distintas máquinas cando o proxecto creza dabondo ● Podedes empregar o que queirades pero: – Apache: como server de aplicacións co módulo mod_php – Nginx: como server de estáticos Este traballo ten a licenza Creative Commons Atribución 3.0. 11 Para ver unha copia da licenza visite http://tinyurl.com/2v352h
  • 12. Coding Standards ● Non teñen relación directa co rendemento da app ● Pero fallos pequenos poden incrementar as chamadas internas do parser de PHP ● Exemplo: ● Eliminando os ?> dos controladores e modelos obrigas a PHP a non pechar os streams de código o cal implica un incremento de rendemento dun 0,4 % do script final. Este traballo ten a licenza Creative Commons Atribución 3.0. 12 Para ver unha copia da licenza visite http://tinyurl.com/2v352h
  • 13. Máis exemplos ● Uso das funcións de expresións regulares de Perl ● Preg_replace ● Preg_match ● Etc. ● Uso de include vs require (*once) ● Outro exemplo chorra: – Impresión de texto con: ● Print e non echo ● Usade a nomenclatura “{$nome_do_usuario}” e non “$nome_do_usuario” ● O mito de que o uso de Orientación a obxectos é máis lento xa non se cumpre ● A partires de PHP 5.3 isto mellorou moitísimo Este traballo ten a licenza Creative Commons Atribución 3.0. 13 Para ver unha copia da licenza visite http://tinyurl.com/2v352h
  • 14. Standard Public Library ● Se queredes facer que PHP vaia máis rápido ● POR FAVOR USADE O SPL DE PHP ● Son APIs escritas en C e compiladas en lingua máquina polo que vai ir moi rápido ● Ten API para moitas das tarefas comúns cando queremos acceder a elementos do sistema a baixo nivel: ● Iteradores de Obxectos, Arrays, Ficheiros, Directorios ● Parseo de XML optimizado ● Sistema de excepcións máis extenso que o incluído no core. ● Vantaxe: todo orientado a obxectos Este traballo ten a licenza Creative Commons Atribución 3.0. 14 Para ver unha copia da licenza visite http://tinyurl.com/2v352h
  • 15. Usade proffiling ● O proffiling é analizar as chamadas internas da linguaxe e o uso de memoria de cada unha delas ● Para PHP usade Xdebug, basicamente porque non hai outro ● Permite proffiling e debugging de forma moi cómoda ● Para consultar os resultados empregade Kcachegrind ou webgrind. ● Se sabedes interpretar de forma correcta os resultados podedes saber onde están os bottlenecks nos vosos apps. Este traballo ten a licenza Creative Commons Atribución 3.0. 15 Para ver unha copia da licenza visite http://tinyurl.com/2v352h
  • 16. En resumo, atacamos así ● Gardando todo en memoria compartida ● Crear estáticos ● Balancear carga entre varios servers ● Sistemas cache distribuídas ● Problema de conexións simultáneas Este traballo ten a licenza Creative Commons Atribución 3.0. 16 Para ver unha copia da licenza visite http://tinyurl.com/2v352h
  • 17. Sistemas de caché Este traballo ten a licenza Creative Commons Atribución 3.0. 17 Para ver unha copia da licenza visite http://tinyurl.com/2v352h
  • 18. Sistemas de caché ● Hai dous tipos ● Sistemas de caché interna ● Sistemas de caché externa ● Para cada un salientamos ● Interna: APC ● Externa: Memcache Este traballo ten a licenza Creative Commons Atribución 3.0. 18 Para ver unha copia da licenza visite http://tinyurl.com/2v352h
  • 19. Sistemas de caché e II ● O realmente interesante é ter unha infraestrutura escalonada de sistema de Cache ● Zend Framework fornece un sistema de varias capas onde podes aniñar distintos sistemas de caché segundo a súa velocidade: Zend_Cache – APC – Memcache – Base de datos – Cache de sistema de ficheiros – Personalizadas Este traballo ten a licenza Creative Commons Atribución 3.0. 19 Para ver unha copia da licenza visite http://tinyurl.com/2v352h
  • 20. APC (Alternative PHP Caché) ● A partir de PHP 5.4 será incluído no paquete base de PHP polo que podedes empregalo sen instalación algunha ● Para todo lo demás: usade pecl ● Api moi sinxela: ● apc_exists() ● apc_add() ● apc_fetch() Este traballo ten a licenza Creative Commons Atribución 3.0. 20 Para ver unha copia da licenza visite http://tinyurl.com/2v352h
  • 21. Memcache ● Agnóstico á lingua de programación ● Sistema totalmente distribuído ● Permite ter un banco de memoria (pares chave-valor) do tamaño que queirades nunha máquina externa que comparte recursos a varios servers ● Permite multiserver e multiclientes ● Api moi sinxela: ● Memcache::connect, conexión inicial ao porto 11211 ● Memcache::set ● Memcache::get Este traballo ten a licenza Creative Commons Atribución 3.0. 21 Para ver unha copia da licenza visite http://tinyurl.com/2v352h
  • 22. Sistemas de plantillas Este traballo ten a licenza Creative Commons Atribución 3.0. 22 Para ver unha copia da licenza visite http://tinyurl.com/2v352h
  • 23. Sistemas de plantillas ● Hai moita controversia co sistema de plantillas ● Moitas persoas prefiren empregar PHP misturado con HTML ● Outras moitas empregan un sistema de plantillas ● Todo depende das vosas necesidades porén eu prefiro empregar un sistema de plantillas ● Vantaxes: sistemas de caching e compilación a opcode das plantillas, etc, etc, etc ● Desvantaxes: obrigan a aprender unha nova sintaxe e distintas API. Este traballo ten a licenza Creative Commons Atribución 3.0. 23 Para ver unha copia da licenza visite http://tinyurl.com/2v352h
  • 24. Smarty 3 ● Para min e a unha solución definitiva ● Baixo as miñas probas ● Incremento de rendemento do 30% fronte a Smarty 2 ● Incremento de rendemento do 15% fronte a uso de PHP embembed – Logo de que Smarty compile as vistas a PHP ● Incremento de rendemento do 40% fronte a uso de PHP Embembed – Logo que Smarty compile as vistas a OpCode Este traballo ten a licenza Creative Commons Atribución 3.0. 24 Para ver unha copia da licenza visite http://tinyurl.com/2v352h
  • 25. Smarty 3 características ● Olvidádevos de Smarty 2 (cousa do pasado, 3 meses) ● Características: ● Template inheritance ● Sistema de cache por grupos ● Compilación a OpCode ● Compilación a PHP optimizado ● Totalmente extensíbel ● Facilita a reutilización de partials ● Sistema bastante bo de plugins (non orientado a obxectos!!!) Este traballo ten a licenza Creative Commons Atribución 3.0. 25 Para ver unha copia da licenza visite http://tinyurl.com/2v352h
  • 26. Caché, caché, caché ● Para o caso das plantillas con partes dinámicas ● Tipico: Hola {$nome_do_usuario} ● Tentade compilar a OpCode con servers especializados como Zend Server (aviso $$$) ● Para o caso de plantillas estáticas ● Compilade todo a html estático escribindo en filesystem ou memcache ● Incluso podedes empregar este sistema para cachear fragmentos (partials) Este traballo ten a licenza Creative Commons Atribución 3.0. 26 Para ver unha copia da licenza visite http://tinyurl.com/2v352h
  • 27. Clustering Este traballo ten a licenza Creative Commons Atribución 3.0. 27 Para ver unha copia da licenza visite http://tinyurl.com/2v352h
  • 28. Sistemas de clustering ● Sodes desenvolvedores, non perdades tempo en administración de sistemas ● O mellor é empregar sistemas que poidan autoescalar ● Eu recomendo EC2 combinado con S3 de Amazon ● E se o presuposto o permite empregade Akamai. Este traballo ten a licenza Creative Commons Atribución 3.0. 28 Para ver unha copia da licenza visite http://tinyurl.com/2v352h
  • 29. Apps na nube ● Como fago que o meu App poida empregar clustering ou poida correr na nube? ● Realmente non cambia moito da infraestrutura que tes sempre que empregues as anteriores suxestións – Caches distribuídas – Conversión a estáticos e Opcode – Diferencia de servidores de aplicativos vs servidores de estáticos Este traballo ten a licenza Creative Commons Atribución 3.0. 29 Para ver unha copia da licenza visite http://tinyurl.com/2v352h
  • 30. Preguntas Este traballo ten a licenza Creative Commons Atribución 3.0. 30 Para ver unha copia da licenza visite http://tinyurl.com/2v352h