SlideShare uma empresa Scribd logo
1 de 39
Baixar para ler offline
PHP para aplicações Web
de grande porte
Felipe Ribeiro - http://feliperibeiro.com
Maio de 2008
João Pessoa - PB
Quem é esse cara?
 Felipe Ribeiro
   Estudante de Ciência da Computação na UFCG
   Engenheiro de sistemas da startup americana
   Shoprizer.com
   Experiência em sistemas distribuídos e
   desenvolvimento Web há 6 anos
   http://feliperibeiro.com
   felipernb@gmail.com.br
Agenda
Apresentando o PHP
O que é uma aplicação de grande porte
Outras tecnologias
Vantagens e desvantagens do PHP
Features e ferramentas para atender os requisitos
O que vem por aí?
O que é PHP?
O que é PHP?

PHP originalmente significava Personal Home Page;
Hoje, assim como GNU, é um acrônimo recursivo que
significa: “PHP Hypertext Preprocessor”;
É uma linguagem dinâmica;
Tomou o lugar do Perl no boom da Web;
Uma linguagem de programação focada na Web.
Um pouco
de história
PHP nasceu em
1994
Foi criado por Rasmus
Lerdorf
E tinha essa cara
<!--getenv HTTP_USER_AGENT-->
<!--ifsubstr $exec_result Mozilla-->
Hey, you are using Netscape!<p>
<!--endif-->

<!--sql database select * from table where
user='$username'-->

<!--ifless $numentries 1-->
Sorry, that record does not exist<p>
<!--endif exit-->

Welcome <!--$user-->!<p>
You have <!--$index:0--> credits left in your account.<p>

<!--include /text/footer.html-->
Depois virou PHP/FI
<?
 $name = quot;bobquot;;
 $db = quot;dbquot;;
 $result = msql($db,quot;select * from table where
firstname='$name'quot;);
 $num = msql_numrows($result);
 echo quot;$num records found!<p>quot;;
 $i=0;
 while($i<$num);
    echo msql_result($result,$i,quot;fullnamequot;);
    echo quot;<br>quot;;
    echo msql_result($result,$i,quot;addressquot;);
    echo quot;<br>quot;;
    $i++;
 endwhile;
?>
E hoje é mais ou menos
assim...
<?php
class SimpleClass {
    private $attribute;

    public function foo($bar) {
        echo $this->attribute * $bar;
    }
}

class ExtendedClass extends SimpleClass {

    public function foo($bar) {
        try {
            do_something();
        } catch(FooBarException $e) {
            die($e->getMessage());
        }
        parent::foo($bar);
    }
}

$o = new ExtendedClass;
$o->foo();
?>
Como funciona?
Fonte: Zend Technologies
PHP é popular!
Fonte: Netcraft
Quem usa?
Yahoo!        Sourceforge
Facebook      Last.fm
Flickr        E mais de 20 milhões de
              sites! :)
del.icio.us
Digg
Wikipedia
O que são aplicações de
grande porte?
Aplicações de grande porte
Grande volume de         Componentes
dados
                         Ambiente heterogêneo
Grande número de         (integração com
acessos                  diferentes linguagens de
                         programação e SOs)
Necessidade de alta
disponibilidade e
redundância (Hot swap,
cluster failover, etc)
Os desafiantes
Java
Bastante robusta e
padrão de mercado,
porém sua
“burocracia” dificulta
mudanças rápidas.
.NET
Custos de licença,
dependência da IDE,
dependência de
plataforma, código
fechado.
Ruby e
Python
Trazem ótimos
conceitos, mas ainda
estão em fase de
maturação.
Vantagens do PHP
Simplicidade
Escalabilidade
Custo
Comunidade
Apache
Deployment simples
Independente de
plataforma e fornecedor
Desvantagens do PHP

Falta suporte a multi-
threading.
Infelizmente carrega
um karma de
quick’n’dirty por causa
de alguns maus
programadores. (Mas
vamos virar esse jogo!)
Integração com outros
sistemas
Webservices
  SOAP
   SoapClient
   SoapServer
  REST
   libcurl
   XMLWriter
   XMLReader
Integração com outros
sistemas
Integração com outras
linguagens de
programação
  Java
  C/C++ e COM/.NET
  Perl
SGBDs

Suporte nativo a vários SGBDs
  MySQL, PostgreSQL, Oracle, SQLite, etc...
Camadas de abstração
  PDO
  MDB2
Testes de Unidade
Os testes devem ser automatizados
  Pelo menos nas fases em que isso é possível
Scripts de teste desenvolvidos ao longo do tempo
aumentam o patrimônio da empresa e garantirão uma
qualidade cada vez maior do software
PHPUnit
  http://phpunit.de
Extensões

PEAR (The PHP
Extension and
Application Repository)
  http://pear.php.net
  Repositório de
  classes escritas em
  PHP
Extensões

PECL (The PHP
Extension Comunity
Library)
  http://pecl.php.net
  Extensões nativas,
  escritas em C.
Produtividade
PHP por si só já é
bastante produtivo,
mas existem IDEs e
Frameworks que
melhoram ainda mais a
produtividade.
IDEs (ou simples editores)
 Zend Studio ($$$)      TextMate ($$$)
 Eclipse PDT            Emacs
 Komodo                 Vim
 Delphi for PHP ($$$)   Entre outros...
 gEdit
 KDevelop
Frameworks
Frameworks ajudam na padronização de código e
reutilização de componentes.
  Zend Framework
  Symfony
  Prado
  CakePHP
  Muitos outros...
Escalabilidade


 Muito Simples!
 Apache mod_proxy_balancer faz quase tudo que você
 precisa!
Performance


PHP dificilmente é o gargalo
80-90% do tempo de carregamento de um site está no
front-end
Mas mesmo assim, podemos otimizar
Caching e Performance
PHP tem um compilador JIT que gera um código
intermedário chamado opcode que é então
interpretado.
Por default essa compilação ocorre em todas as
execuções do script. Para otimização e caching desse
opcode, existem algumas soluções:
  Pacote APC do PECL
  XCache
  Zend Platform ($$$)
E o suporte?
Comunidade ativa
Zend
Grandes investidores
  Oracle
  Yahoo!
  IBM
O que vem por aí?

PHP 5.3 e PHP 6 prometem novidades
 Namespaces
 Closures
 Unicode
Conclusões

PHP nasceu para Web e por isso sai na frente.
PHP é bom o suficiente para grande maioria das
aplicações que rodam na Web.
PHP é simples e barato.
LAMP dá conta do recado!
Perguntas?
Obrigado!

Felipe Ribeiro
http://feliperibeiro.com
felipernb@gmail.com
Referências
PHP 5 Objects, Patterns,
and Practice - Matt
Zandstra - Editora Apress

PHP Leads Web 2.0 - Andi
Gutmans (White Paper)

PHP 5: Open Source
Scripting for the
Heterogeneous Enterprise
- Zend Technologies (White
Paper)

An overview on PHP -
Zend Technologies (White
Paper)

Mais conteúdo relacionado

Mais procurados

Aula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHPAula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHPDaniel Brandão
 
PHP na Tela Escura: Aplicações Poderosas em Linha de Comando
PHP na Tela Escura: Aplicações Poderosas em Linha de ComandoPHP na Tela Escura: Aplicações Poderosas em Linha de Comando
PHP na Tela Escura: Aplicações Poderosas em Linha de ComandoRafael Jaques
 
Curso de php do básico ao avançado
Curso de php do básico ao avançadoCurso de php do básico ao avançado
Curso de php do básico ao avançadoThiago Carlos
 
Curso Linguagem de Programação I - PHP Básico
Curso Linguagem de Programação I - PHP BásicoCurso Linguagem de Programação I - PHP Básico
Curso Linguagem de Programação I - PHP BásicoNorton Guimarães
 
Desenvolvimento web: PHP orientado a objetos
Desenvolvimento web: PHP orientado a objetosDesenvolvimento web: PHP orientado a objetos
Desenvolvimento web: PHP orientado a objetosLucas Vegi
 
Conceitos básicos PHP
Conceitos básicos PHPConceitos básicos PHP
Conceitos básicos PHPHelton Ritter
 
Apresentação php
Apresentação phpApresentação php
Apresentação phpwilliameier
 
PHP Day - PHP para iniciantes
PHP Day - PHP para iniciantesPHP Day - PHP para iniciantes
PHP Day - PHP para iniciantesAlmir Mendes
 
Apresentação da Linguagem de Programação PHP
Apresentação da Linguagem de Programação PHPApresentação da Linguagem de Programação PHP
Apresentação da Linguagem de Programação PHPLorranna Machado
 
Aula03 PHP - Estruturas Condicionais
Aula03 PHP - Estruturas CondicionaisAula03 PHP - Estruturas Condicionais
Aula03 PHP - Estruturas CondicionaisDaniel Brandão
 
Aula 01 introdução ao php
Aula 01   introdução ao phpAula 01   introdução ao php
Aula 01 introdução ao phpAdriano Castro
 
Programação Web com PHP 7.x
Programação Web com PHP 7.xProgramação Web com PHP 7.x
Programação Web com PHP 7.xNorton Guimarães
 

Mais procurados (20)

Mini Curso de PHP
Mini Curso de PHPMini Curso de PHP
Mini Curso de PHP
 
PHP - Introdução
PHP - IntroduçãoPHP - Introdução
PHP - Introdução
 
Introdução a php
Introdução a phpIntrodução a php
Introdução a php
 
Aula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHPAula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHP
 
PHP na Tela Escura: Aplicações Poderosas em Linha de Comando
PHP na Tela Escura: Aplicações Poderosas em Linha de ComandoPHP na Tela Escura: Aplicações Poderosas em Linha de Comando
PHP na Tela Escura: Aplicações Poderosas em Linha de Comando
 
Curso de php do básico ao avançado
Curso de php do básico ao avançadoCurso de php do básico ao avançado
Curso de php do básico ao avançado
 
Curso Linguagem de Programação I - PHP Básico
Curso Linguagem de Programação I - PHP BásicoCurso Linguagem de Programação I - PHP Básico
Curso Linguagem de Programação I - PHP Básico
 
Desenvolvimento web: PHP orientado a objetos
Desenvolvimento web: PHP orientado a objetosDesenvolvimento web: PHP orientado a objetos
Desenvolvimento web: PHP orientado a objetos
 
Conceitos básicos PHP
Conceitos básicos PHPConceitos básicos PHP
Conceitos básicos PHP
 
Primeira Aula PHP
Primeira Aula PHPPrimeira Aula PHP
Primeira Aula PHP
 
PHP 7 - A Maioridade do PHP
PHP 7 - A Maioridade do PHPPHP 7 - A Maioridade do PHP
PHP 7 - A Maioridade do PHP
 
Frameworks PHP
Frameworks PHPFrameworks PHP
Frameworks PHP
 
Apresentação php
Apresentação phpApresentação php
Apresentação php
 
PHP Day - PHP para iniciantes
PHP Day - PHP para iniciantesPHP Day - PHP para iniciantes
PHP Day - PHP para iniciantes
 
Apresentação da Linguagem de Programação PHP
Apresentação da Linguagem de Programação PHPApresentação da Linguagem de Programação PHP
Apresentação da Linguagem de Programação PHP
 
Aula03 PHP - Estruturas Condicionais
Aula03 PHP - Estruturas CondicionaisAula03 PHP - Estruturas Condicionais
Aula03 PHP - Estruturas Condicionais
 
Aula 01 introdução ao php
Aula 01   introdução ao phpAula 01   introdução ao php
Aula 01 introdução ao php
 
PHP - Strings
PHP - StringsPHP - Strings
PHP - Strings
 
Php m18
Php m18Php m18
Php m18
 
Programação Web com PHP 7.x
Programação Web com PHP 7.xProgramação Web com PHP 7.x
Programação Web com PHP 7.x
 

Destaque

Orientação a Objetos com PHP
Orientação a Objetos com PHPOrientação a Objetos com PHP
Orientação a Objetos com PHPAugusto Pascutti
 
Criando e consumindo webservice REST com PHP e JSON
Criando e consumindo webservice REST com PHP e JSONCriando e consumindo webservice REST com PHP e JSON
Criando e consumindo webservice REST com PHP e JSONMarcio Junior Vieira
 
A Evolução do PHP - 4º Dev In Santos
A Evolução do PHP - 4º Dev In SantosA Evolução do PHP - 4º Dev In Santos
A Evolução do PHP - 4º Dev In SantosEvaldo Junior
 
Criando aplicações com PHP-GTK
Criando aplicações com PHP-GTKCriando aplicações com PHP-GTK
Criando aplicações com PHP-GTKPablo Dall'Oglio
 
SEO para Front-End - BeagaJS
SEO para Front-End - BeagaJSSEO para Front-End - BeagaJS
SEO para Front-End - BeagaJSFabio Ricotta
 
Criação de sites Joomla com CCKs e frameworks de template - Joomla Day Ribeir...
Criação de sites Joomla com CCKs e frameworks de template - Joomla Day Ribeir...Criação de sites Joomla com CCKs e frameworks de template - Joomla Day Ribeir...
Criação de sites Joomla com CCKs e frameworks de template - Joomla Day Ribeir...jCursos
 
Como instalar servidor web xampp
Como instalar servidor web xamppComo instalar servidor web xampp
Como instalar servidor web xampparnaldo vasquez
 
Criando Sites Dinamicos com Joomla php
Criando Sites Dinamicos com Joomla phpCriando Sites Dinamicos com Joomla php
Criando Sites Dinamicos com Joomla phpJackson Meires
 
Como instalar o XAMPP no Micro
Como instalar o XAMPP no MicroComo instalar o XAMPP no Micro
Como instalar o XAMPP no MicroMarcio Okabe
 
Joomla! para iniciantes - Djonatan Buss, Jerônimo Medina Madruga
Joomla! para iniciantes - Djonatan Buss, Jerônimo Medina MadrugaJoomla! para iniciantes - Djonatan Buss, Jerônimo Medina Madruga
Joomla! para iniciantes - Djonatan Buss, Jerônimo Medina MadrugaTchelinux
 
Gestão de Conteúdo Web: Guia Básico Utilizando o Joomla!
Gestão de Conteúdo Web: Guia Básico Utilizando o Joomla!Gestão de Conteúdo Web: Guia Básico Utilizando o Joomla!
Gestão de Conteúdo Web: Guia Básico Utilizando o Joomla!Daniel Corrêa
 
Gestão de conteúdos com aplicações instaladas em servidores
Gestão de conteúdos com aplicações instaladas em servidoresGestão de conteúdos com aplicações instaladas em servidores
Gestão de conteúdos com aplicações instaladas em servidoresHenriqueta Sofia Djalo
 
Manual de instalação do xampp
Manual de instalação do xamppManual de instalação do xampp
Manual de instalação do xamppZe'eduardo Silva
 
Seminário - Video game e suas convergências
Seminário - Video game e suas convergênciasSeminário - Video game e suas convergências
Seminário - Video game e suas convergênciasRafael da Silva
 
Jogos em Python utilizando PyGame
Jogos em Python utilizando PyGameJogos em Python utilizando PyGame
Jogos em Python utilizando PyGameMayron Cachina
 

Destaque (20)

Orientação a Objetos com PHP
Orientação a Objetos com PHPOrientação a Objetos com PHP
Orientação a Objetos com PHP
 
Criando e consumindo webservice REST com PHP e JSON
Criando e consumindo webservice REST com PHP e JSONCriando e consumindo webservice REST com PHP e JSON
Criando e consumindo webservice REST com PHP e JSON
 
A Evolução do PHP - 4º Dev In Santos
A Evolução do PHP - 4º Dev In SantosA Evolução do PHP - 4º Dev In Santos
A Evolução do PHP - 4º Dev In Santos
 
PHP: Evolução
PHP: EvoluçãoPHP: Evolução
PHP: Evolução
 
Criando aplicações com PHP-GTK
Criando aplicações com PHP-GTKCriando aplicações com PHP-GTK
Criando aplicações com PHP-GTK
 
SEO para Front-End - BeagaJS
SEO para Front-End - BeagaJSSEO para Front-End - BeagaJS
SEO para Front-End - BeagaJS
 
Security & PHP
Security & PHPSecurity & PHP
Security & PHP
 
android
androidandroid
android
 
Criação de sites Joomla com CCKs e frameworks de template - Joomla Day Ribeir...
Criação de sites Joomla com CCKs e frameworks de template - Joomla Day Ribeir...Criação de sites Joomla com CCKs e frameworks de template - Joomla Day Ribeir...
Criação de sites Joomla com CCKs e frameworks de template - Joomla Day Ribeir...
 
Como instalar servidor web xampp
Como instalar servidor web xamppComo instalar servidor web xampp
Como instalar servidor web xampp
 
Como Instalar o Joomla no micro
Como Instalar o Joomla no microComo Instalar o Joomla no micro
Como Instalar o Joomla no micro
 
Criando Sites Dinamicos com Joomla php
Criando Sites Dinamicos com Joomla phpCriando Sites Dinamicos com Joomla php
Criando Sites Dinamicos com Joomla php
 
Como instalar o XAMPP no Micro
Como instalar o XAMPP no MicroComo instalar o XAMPP no Micro
Como instalar o XAMPP no Micro
 
Joomla! para iniciantes - Djonatan Buss, Jerônimo Medina Madruga
Joomla! para iniciantes - Djonatan Buss, Jerônimo Medina MadrugaJoomla! para iniciantes - Djonatan Buss, Jerônimo Medina Madruga
Joomla! para iniciantes - Djonatan Buss, Jerônimo Medina Madruga
 
Gestão de Conteúdo Web: Guia Básico Utilizando o Joomla!
Gestão de Conteúdo Web: Guia Básico Utilizando o Joomla!Gestão de Conteúdo Web: Guia Básico Utilizando o Joomla!
Gestão de Conteúdo Web: Guia Básico Utilizando o Joomla!
 
Gestão de conteúdos com aplicações instaladas em servidores
Gestão de conteúdos com aplicações instaladas em servidoresGestão de conteúdos com aplicações instaladas em servidores
Gestão de conteúdos com aplicações instaladas em servidores
 
Joomla! CMS
Joomla! CMSJoomla! CMS
Joomla! CMS
 
Manual de instalação do xampp
Manual de instalação do xamppManual de instalação do xampp
Manual de instalação do xampp
 
Seminário - Video game e suas convergências
Seminário - Video game e suas convergênciasSeminário - Video game e suas convergências
Seminário - Video game e suas convergências
 
Jogos em Python utilizando PyGame
Jogos em Python utilizando PyGameJogos em Python utilizando PyGame
Jogos em Python utilizando PyGame
 

Semelhante a PHP para aplicações Web de grande porte

Oficina de PHP - Software Freedom Day Luziânia 2013
Oficina de PHP - Software Freedom Day Luziânia 2013Oficina de PHP - Software Freedom Day Luziânia 2013
Oficina de PHP - Software Freedom Day Luziânia 2013George Mendonça
 
Como contribuir-com-open-source-php conference-2016
Como contribuir-com-open-source-php conference-2016Como contribuir-com-open-source-php conference-2016
Como contribuir-com-open-source-php conference-2016Marcos Paulo
 
PHP, Presente e Futuro
PHP, Presente e FuturoPHP, Presente e Futuro
PHP, Presente e FuturoFreedom DayMS
 
FISL12. Web Services e Computação em Nuvem com PHP
FISL12. Web Services e Computação em Nuvem com PHPFISL12. Web Services e Computação em Nuvem com PHP
FISL12. Web Services e Computação em Nuvem com PHPFlávio Lisboa
 
Ecossistema PHP - O presente, o passado e o futuro da linguagem back-end mais...
Ecossistema PHP - O presente, o passado e o futuro da linguagem back-end mais...Ecossistema PHP - O presente, o passado e o futuro da linguagem back-end mais...
Ecossistema PHP - O presente, o passado e o futuro da linguagem back-end mais...Rodrigo Wanderley de Melo Cardoso
 
Prepare-se para o próximo estágio da evolução PHP
Prepare-se para o próximo estágio da evolução PHPPrepare-se para o próximo estágio da evolução PHP
Prepare-se para o próximo estágio da evolução PHPRaphael Almeida
 
O ecossistema e o estado atual do php - o presente, o passado e o futuro da ...
O ecossistema e o estado atual do php  - o presente, o passado e o futuro da ...O ecossistema e o estado atual do php  - o presente, o passado e o futuro da ...
O ecossistema e o estado atual do php - o presente, o passado e o futuro da ...Rodrigo Wanderley de Melo Cardoso
 
PHP, mas o que é isso ?
PHP, mas o que é isso ?PHP, mas o que é isso ?
PHP, mas o que é isso ?phpal
 
TDC2016POA | Trilha PHP - Por que utilizar o Laravel?
TDC2016POA | Trilha PHP - Por que utilizar o Laravel?TDC2016POA | Trilha PHP - Por que utilizar o Laravel?
TDC2016POA | Trilha PHP - Por que utilizar o Laravel?tdc-globalcode
 
Prog web 01-php-introducao
Prog web 01-php-introducaoProg web 01-php-introducao
Prog web 01-php-introducaoRegis Magalhães
 
Prog web 01-php-introducao
Prog web 01-php-introducaoProg web 01-php-introducao
Prog web 01-php-introducaoRegis Magalhães
 
php4android: desenvolva aplicações android em PHP
php4android: desenvolva aplicações android em PHPphp4android: desenvolva aplicações android em PHP
php4android: desenvolva aplicações android em PHPRamon Ribeiro Rabello
 
Ecossistema php: O presente, o passado e o futuro da linguagem (back-end) mai...
Ecossistema php: O presente, o passado e o futuro da linguagem (back-end) mai...Ecossistema php: O presente, o passado e o futuro da linguagem (back-end) mai...
Ecossistema php: O presente, o passado e o futuro da linguagem (back-end) mai...Rodrigo Wanderley de Melo Cardoso
 

Semelhante a PHP para aplicações Web de grande porte (20)

Oficina de PHP - Software Freedom Day Luziânia 2013
Oficina de PHP - Software Freedom Day Luziânia 2013Oficina de PHP - Software Freedom Day Luziânia 2013
Oficina de PHP - Software Freedom Day Luziânia 2013
 
Como contribuir-com-open-source-php conference-2016
Como contribuir-com-open-source-php conference-2016Como contribuir-com-open-source-php conference-2016
Como contribuir-com-open-source-php conference-2016
 
Panorama PHP
Panorama PHPPanorama PHP
Panorama PHP
 
PHP, Presente e Futuro
PHP, Presente e FuturoPHP, Presente e Futuro
PHP, Presente e Futuro
 
PHP Presente e Futuro
PHP Presente e FuturoPHP Presente e Futuro
PHP Presente e Futuro
 
FISL12. Web Services e Computação em Nuvem com PHP
FISL12. Web Services e Computação em Nuvem com PHPFISL12. Web Services e Computação em Nuvem com PHP
FISL12. Web Services e Computação em Nuvem com PHP
 
Ecossistema PHP - O presente, o passado e o futuro da linguagem back-end mais...
Ecossistema PHP - O presente, o passado e o futuro da linguagem back-end mais...Ecossistema PHP - O presente, o passado e o futuro da linguagem back-end mais...
Ecossistema PHP - O presente, o passado e o futuro da linguagem back-end mais...
 
Pho Aula 02
Pho Aula 02Pho Aula 02
Pho Aula 02
 
Guia php
Guia phpGuia php
Guia php
 
Prepare-se para o próximo estágio da evolução PHP
Prepare-se para o próximo estágio da evolução PHPPrepare-se para o próximo estágio da evolução PHP
Prepare-se para o próximo estágio da evolução PHP
 
O ecossistema e o estado atual do php - o presente, o passado e o futuro da ...
O ecossistema e o estado atual do php  - o presente, o passado e o futuro da ...O ecossistema e o estado atual do php  - o presente, o passado e o futuro da ...
O ecossistema e o estado atual do php - o presente, o passado e o futuro da ...
 
PHP, mas o que é isso ?
PHP, mas o que é isso ?PHP, mas o que é isso ?
PHP, mas o que é isso ?
 
TDC2016POA | Trilha PHP - Por que utilizar o Laravel?
TDC2016POA | Trilha PHP - Por que utilizar o Laravel?TDC2016POA | Trilha PHP - Por que utilizar o Laravel?
TDC2016POA | Trilha PHP - Por que utilizar o Laravel?
 
php 01 introducao
php 01 introducaophp 01 introducao
php 01 introducao
 
Prog web 01-php-introducao
Prog web 01-php-introducaoProg web 01-php-introducao
Prog web 01-php-introducao
 
Prog web 01-php-introducao
Prog web 01-php-introducaoProg web 01-php-introducao
Prog web 01-php-introducao
 
php4android: desenvolva aplicações android em PHP
php4android: desenvolva aplicações android em PHPphp4android: desenvolva aplicações android em PHP
php4android: desenvolva aplicações android em PHP
 
Ecossistema php: O presente, o passado e o futuro da linguagem (back-end) mai...
Ecossistema php: O presente, o passado e o futuro da linguagem (back-end) mai...Ecossistema php: O presente, o passado e o futuro da linguagem (back-end) mai...
Ecossistema php: O presente, o passado e o futuro da linguagem (back-end) mai...
 
Principais Tecnologias Web
Principais Tecnologias WebPrincipais Tecnologias Web
Principais Tecnologias Web
 
Principais Tecnologias WEB
Principais Tecnologias WEBPrincipais Tecnologias WEB
Principais Tecnologias WEB
 

Mais de Felipe Ribeiro

PHP RESTful Web Services - PHPConf'09
PHP RESTful Web Services - PHPConf'09PHP RESTful Web Services - PHPConf'09
PHP RESTful Web Services - PHPConf'09Felipe Ribeiro
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHPFelipe Ribeiro
 
Software livre e padrões abertos no desenvolvimento Web
Software livre e padrões abertos no desenvolvimento WebSoftware livre e padrões abertos no desenvolvimento Web
Software livre e padrões abertos no desenvolvimento WebFelipe Ribeiro
 
PHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta PerformancePHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta PerformanceFelipe Ribeiro
 
PHP RESTful Web Services
PHP RESTful Web ServicesPHP RESTful Web Services
PHP RESTful Web ServicesFelipe Ribeiro
 

Mais de Felipe Ribeiro (7)

PHP RESTful Web Services - PHPConf'09
PHP RESTful Web Services - PHPConf'09PHP RESTful Web Services - PHPConf'09
PHP RESTful Web Services - PHPConf'09
 
SPL Datastructures
SPL DatastructuresSPL Datastructures
SPL Datastructures
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHP
 
PHP 5.3 - What's new?
PHP 5.3 - What's new?PHP 5.3 - What's new?
PHP 5.3 - What's new?
 
Software livre e padrões abertos no desenvolvimento Web
Software livre e padrões abertos no desenvolvimento WebSoftware livre e padrões abertos no desenvolvimento Web
Software livre e padrões abertos no desenvolvimento Web
 
PHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta PerformancePHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta Performance
 
PHP RESTful Web Services
PHP RESTful Web ServicesPHP RESTful Web Services
PHP RESTful Web Services
 

PHP para aplicações Web de grande porte

  • 1. PHP para aplicações Web de grande porte Felipe Ribeiro - http://feliperibeiro.com Maio de 2008 João Pessoa - PB
  • 2. Quem é esse cara? Felipe Ribeiro Estudante de Ciência da Computação na UFCG Engenheiro de sistemas da startup americana Shoprizer.com Experiência em sistemas distribuídos e desenvolvimento Web há 6 anos http://feliperibeiro.com felipernb@gmail.com.br
  • 3. Agenda Apresentando o PHP O que é uma aplicação de grande porte Outras tecnologias Vantagens e desvantagens do PHP Features e ferramentas para atender os requisitos O que vem por aí?
  • 4. O que é PHP?
  • 5. O que é PHP? PHP originalmente significava Personal Home Page; Hoje, assim como GNU, é um acrônimo recursivo que significa: “PHP Hypertext Preprocessor”; É uma linguagem dinâmica; Tomou o lugar do Perl no boom da Web; Uma linguagem de programação focada na Web.
  • 7. Foi criado por Rasmus Lerdorf
  • 8. E tinha essa cara <!--getenv HTTP_USER_AGENT--> <!--ifsubstr $exec_result Mozilla--> Hey, you are using Netscape!<p> <!--endif--> <!--sql database select * from table where user='$username'--> <!--ifless $numentries 1--> Sorry, that record does not exist<p> <!--endif exit--> Welcome <!--$user-->!<p> You have <!--$index:0--> credits left in your account.<p> <!--include /text/footer.html-->
  • 9. Depois virou PHP/FI <? $name = quot;bobquot;; $db = quot;dbquot;; $result = msql($db,quot;select * from table where firstname='$name'quot;); $num = msql_numrows($result); echo quot;$num records found!<p>quot;; $i=0; while($i<$num); echo msql_result($result,$i,quot;fullnamequot;); echo quot;<br>quot;; echo msql_result($result,$i,quot;addressquot;); echo quot;<br>quot;; $i++; endwhile; ?>
  • 10. E hoje é mais ou menos assim... <?php class SimpleClass { private $attribute; public function foo($bar) { echo $this->attribute * $bar; } } class ExtendedClass extends SimpleClass { public function foo($bar) { try { do_something(); } catch(FooBarException $e) { die($e->getMessage()); } parent::foo($bar); } } $o = new ExtendedClass; $o->foo(); ?>
  • 13. Quem usa? Yahoo! Sourceforge Facebook Last.fm Flickr E mais de 20 milhões de sites! :) del.icio.us Digg Wikipedia
  • 14. O que são aplicações de grande porte?
  • 15. Aplicações de grande porte Grande volume de Componentes dados Ambiente heterogêneo Grande número de (integração com acessos diferentes linguagens de programação e SOs) Necessidade de alta disponibilidade e redundância (Hot swap, cluster failover, etc)
  • 17. Java Bastante robusta e padrão de mercado, porém sua “burocracia” dificulta mudanças rápidas.
  • 18. .NET Custos de licença, dependência da IDE, dependência de plataforma, código fechado.
  • 19. Ruby e Python Trazem ótimos conceitos, mas ainda estão em fase de maturação.
  • 21. Desvantagens do PHP Falta suporte a multi- threading. Infelizmente carrega um karma de quick’n’dirty por causa de alguns maus programadores. (Mas vamos virar esse jogo!)
  • 22. Integração com outros sistemas Webservices SOAP SoapClient SoapServer REST libcurl XMLWriter XMLReader
  • 23. Integração com outros sistemas Integração com outras linguagens de programação Java C/C++ e COM/.NET Perl
  • 24. SGBDs Suporte nativo a vários SGBDs MySQL, PostgreSQL, Oracle, SQLite, etc... Camadas de abstração PDO MDB2
  • 25. Testes de Unidade Os testes devem ser automatizados Pelo menos nas fases em que isso é possível Scripts de teste desenvolvidos ao longo do tempo aumentam o patrimônio da empresa e garantirão uma qualidade cada vez maior do software PHPUnit http://phpunit.de
  • 26. Extensões PEAR (The PHP Extension and Application Repository) http://pear.php.net Repositório de classes escritas em PHP
  • 27. Extensões PECL (The PHP Extension Comunity Library) http://pecl.php.net Extensões nativas, escritas em C.
  • 28. Produtividade PHP por si só já é bastante produtivo, mas existem IDEs e Frameworks que melhoram ainda mais a produtividade.
  • 29. IDEs (ou simples editores) Zend Studio ($$$) TextMate ($$$) Eclipse PDT Emacs Komodo Vim Delphi for PHP ($$$) Entre outros... gEdit KDevelop
  • 30. Frameworks Frameworks ajudam na padronização de código e reutilização de componentes. Zend Framework Symfony Prado CakePHP Muitos outros...
  • 31. Escalabilidade Muito Simples! Apache mod_proxy_balancer faz quase tudo que você precisa!
  • 32. Performance PHP dificilmente é o gargalo 80-90% do tempo de carregamento de um site está no front-end Mas mesmo assim, podemos otimizar
  • 33. Caching e Performance PHP tem um compilador JIT que gera um código intermedário chamado opcode que é então interpretado. Por default essa compilação ocorre em todas as execuções do script. Para otimização e caching desse opcode, existem algumas soluções: Pacote APC do PECL XCache Zend Platform ($$$)
  • 34. E o suporte? Comunidade ativa Zend Grandes investidores Oracle Yahoo! IBM
  • 35. O que vem por aí? PHP 5.3 e PHP 6 prometem novidades Namespaces Closures Unicode
  • 36. Conclusões PHP nasceu para Web e por isso sai na frente. PHP é bom o suficiente para grande maioria das aplicações que rodam na Web. PHP é simples e barato. LAMP dá conta do recado!
  • 39. Referências PHP 5 Objects, Patterns, and Practice - Matt Zandstra - Editora Apress PHP Leads Web 2.0 - Andi Gutmans (White Paper) PHP 5: Open Source Scripting for the Heterogeneous Enterprise - Zend Technologies (White Paper) An overview on PHP - Zend Technologies (White Paper)