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í?
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.
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();
?>
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)
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!)
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
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 ($$$)
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!