PHP para aplicações Web de grande porte
-
Upload
felipe-ribeiro -
Category
Business
-
view
8.774 -
download
1
description
Transcript of PHP para aplicações Web de grande porte
PHP para aplicações Web de grande porteFelipe 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
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?
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.
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 = "bob"; $db = "db"; $result = msql($db,"select * from table where firstname='$name'"); $num = msql_numrows($result); echo "$num records found!<p>"; $i=0; while($i<$num); echo msql_result($result,$i,"fullname"); echo "<br>"; echo msql_result($result,$i,"address"); echo "<br>"; $i++; endwhile;?>
E hoje é mais ou menos assim...<?phpclass 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();?>
Quem usa?
Yahoo!
Flickr
del.icio.us
Digg
Wikipedia
Sourceforge
Last.fm
E mais de 20 milhões de sites! :)
Grande volume de dados
Grande número de acessos
Necessidade de alta disponibilidade e redundância (Hot swap, cluster failover, etc)
Componentes
Ambiente heterogêneo (integração com diferentes linguagens de programação e SOs)
Aplicações de grande porte
Vantagens do PHPSimplicidade
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.
ProdutividadePHP por si só já é bastante produtivo, mas existem IDEs e Frameworks que melhoram ainda mais a produtividade.
IDEs (ou simples editores)
Zend Studio ($$$)
Eclipse PDT
Komodo
Delphi for PHP ($$$)
gEdit
KDevelop
TextMate ($$$)
Emacs
Vim
Entre outros...
Frameworks
Frameworks ajudam na padronização de código e reutilização de componentes.
Zend Framework
Symfony
Prado
CakePHP
Muitos outros...
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 ($$$)
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!
Obrigado!
Felipe Ribeirohttp://[email protected]