Monthly Archives: June 2008

Smarty e Caching

O artigo a seguir foi publicado originalmente por Gregory Brown no site http://elbugz.livejournal.com/1034.html

As informações disponibilizadas neste artigo são de responsabilidade de Gregory Brown do site http://elbugz.livejournal.com/

O Smarty é conhecido mais como um “Template engine” do que um “caching engine”. Embora a documentação fale sobre o cache, ele é pouco utilizado pelas pessoas e tende-se a pensar nele mais como uma ferramenta de exibição do qualquer outra coisa.

Vamos do começo…

O que é esse tal de caching engine?

Quando você faz um código php simples, por exemplo:

pag: exemplo1.php
<?php
for ($i=0;$i<5;$i++){
echo “$i – Linha repetida.<br />\r\n”;
}
?>
Ao rodar ele, o resultado será:

0 – Linha repetida.<br />
1 – Linha repetida.<br />
2 – Linha repetida.<br />
3 – Linha repetida.<br />
4 – Linha repetida.<br />

Toda vez que você acessar a página exemplo1.php, o que acontece é:

1 – seu servidor HTTP pede para o PHP interpretar o código-fonte do exemplo1.php
2 – o PHP lê o arquivo e processa as instruções nele
3 – ele cospe o resultado de volta para o servidor web
4 – o servidor web manda pra você.

Tá, legal, e daí? Você pergunta?

Aqui que entra o Caching-engine.

Um Caching engine permite você fazer algo um pouco diferente:

Toda vez que você acessar a página exemplo1.php, o que acontece é:

1 – seu servidor HTTP pede para o PHP interpretar o código-fonte do exemplo1.php
2 – o PHP lê o arquivo e processa as instruções nele
3 – o Caching-Engine (CE) verifica se existe uma versão já pronta da página
3a – se não tiver, ele executa as operações do for
3b – tem, lê o arquivo do disco.
4 – ele cospe o resultado de volta para o servidor web
5 – o servidor web manda pra você.

OK, então um caching engine basicamente cria uma cópia rendida de um arquivo pronto. Parece ser balela inútil, principalmente com um exemplo tão tosco e simples como um “for”.

Agora extrapolemos….

Imagine uma página que lê uma tabela de log do seu banco. Esses dados pegam o resultado estatístico a cada hora. Porque seu site tem muitas visitas, o LOG é bem extenso, e as queries demoram uns 2 segundos pra responder. Agora não só a query demora uns dois segundos pra responder, mas você ainda precisa fazer uma série de contas e cálculos complexos com os dados que são produzidos pela query.
Sua página agora demora uns 3 segundos pra responder, e nesse meio tempo, o processadordo servidor  fica próximos dos 75%.

Você pergunta “tá e?”.

Agora lembre-se que seu servidor tem acessos pra caramba. Imagine 1000 usuários solicitando a mesma página em 1 minuto? O site trava, bomba, cai ou qualquer outra terminologia que você queira atribuir a esse acontecimento.

Se você utilizar um CE, o processamento ocorre somente uma vez, na primeira solicitação. Uma cópia do resultado é arquivado, e os outros 999 usuários vão estar vendo um HTML e não um PHP processado realtime.

Resultado? Seu site não cai, os outros serviços continuam livres para usar o processador.

Smarty – Pra mudar sua vida

O artigo a seguir foi publicado originalmente por Jonathan Cardozo no site http://phpdeverdade.blogspot.com/2007/05/smarty-pra-mudar-sua-vida.html

As informações disponibilizadas neste artigo são de responsabilidade de Jonathan Cardozo do site http://phpdeverdade.blogspot.com/

Introdução

Olá Pessoal, como vão?

Nesse post iremos falar sobre um assunto muito interessante, geradores de templates, especificamente do Smarty, um projeto apoiado pelos criadores do PHP.

O que diabo é Smarty?

Bom, primeiro irei explicar o que é, e para que serve um gerador de templates. Um gerador de templates e responsável pela separação do código da interface de seu projeto, alguns ainda pensam num gerador de templates como um programa que gera layouts automaticamente mas não é esse o caso, por exemplo, você tem um form de envio de e-mail, quando você usa o Smarty você separa o form html da parte que cuida dos dados enviados nesse form.
O Smarty usa arquivos html com tags especiais para inserir os dados vindos do arquivo de controle php, e como se o template fosse uma fantasia de seus programa.

Para que serve mesmo?

Bem, eu poderia passar dias aqui escrevendo suas funcionalidade mas vou explicar dando exemplos práticos.

* Você tem um projeto onde trabalha com equipes distintas para o layout e a programação, o Smarty resolve.
* Você tem um site onde tem a opção do usuário escolher um layout personalizado, o Smarty resolve.
* Você tem um projeto onde vai ter que estar sempre mudando de layout periodicamente, como estações do ano, festas e coisas assim, o Smarty resolve.
* Seu projeto usa MVC(falaremos mais a frente) para maior eficiência nas atualizações, vai precisar do Smarty(ou outro gerador).

Vamos Começar

Vamos partir para a diversão em sí. Vamos instalar o Smarty, uma tarefa bem simples.
Primeiro vamos baixar a versão mais recente em http://smarty.php.net, nesse site também encontramos a documentação do projeto, e em português, que é muito boa por sinal.
Baixe o arquivo compactado em tar.gz, por isso vai precisar de um programa de compressão, existem milhares grátis por ai.
Descompacte o arquivo em uma pasta dentro de seu servidor web. Feito isso vai ver que na pasta do Smarty existem algumas pastas, mas você só ira precisar da pasta libs (mas não recomendo que apague os outros arquivos, são alguns exemplos e readmes) e pronto está instalado.

Hello World, nosso primeiro exemplo

Vamos fazer nosso primeiro exemplo, um script bem simples só para demostrar o funcionamento do Smarty.
O Smarty trabalha com uma estrutura de pastas bem intuitivas:

* templates – é a pasta onde ficarão os arquivos de template.
* templates_c – é a pasta onde será compilados os templates.
* configs – é a pasta onde ficarão os arquivos de configuração, não falarei aqui, mas é um recurso bastante interessante, veja no manual do projeto.
* cache – é a pasta de cache do smarty, que também é um recurso muito bom, mas não será citado nesse post.

Essas pastas se chamam assim por padrão, mas você pode configurar o Smarty para utilizar outros nomes, veremos a frente.
Crie uma pasta para nosso projeto na raiz do seu servidor, chame-a de HelloWorldSmarty, dentro dessa pasta, crie os 3 diretorios: templates, templates_c e configs.
Dentro do diretório de nosso projeto crie um arquivo index.php, e dentro dele vamos chamar o smarty, veja só:

<[? # @File: Index.php – Smarty Hello World

# Requendo a Classe do Smarty
# Considerando que a pasta do Smarty é “smarty”
require(“../smarty/libs/Smarty.class.php”);

# Criando objeto da classe $mySmarty = new Smarty; # Passando algumas configurações # Ativando a chegagem na compilação $mySmarty->compile_check = true;
# Ativando a depuração do codigo
$mySmarty->debugging = true;
# Se voce deseja definir os nomes das pastas do smarty use
# $mySmarty->template_dir = “DIRETORIO_DESEJADO”;
# $mySmarty->compile_dir = “DIRETORIO_DESEJADO”;
# $mySmarty->cache_dir = “DIRETORIO_DESEJADO”;

# Vamos mandar algumas variaveis pro tempalte
# Sintaxe – $mySmarty->assign(“NOME_DA_VARIAVEL”,”VALOR”);
$mySmarty->assign(“nome”,”Php de Verdade”);

# Agora vamos mandar o smarty renderizar o arquivo final
# Informe o template que sera procurado no diretorio de templates
$mySmarty->display(“index.tpl.html”);

?]>

Pronto, o código está bem comentado então vamos passar para outro passo, o template. O template é um arquivo em HTML(“<>”) com marcações específicas do Smarty(“{}”), entao vá na pasta templates e crie o arquivo que estou chamando no nosso arquivo de controle, “index.tpl.html”, pode chama-lo como quiser, com qualquer extensão também, não importa, desde que chame corretamente no arquivo de controle. Ai vai o codigo dele:

* Atenção: Pessoal to usando as tags HTML(“<>”) assim (“<[]>”) porque o blog bloqueia tags html viu, mas na hora de escrever no arquivo escreve tags HTML mesmo.

<[html]>
<[body]>
<[p]>Hello World em Smarty, seja bem vindo {$nome}<[/p]>
<[body]>
<[/html]>

Pronto, salve o arquivo, é um template simples que so exibira a variavel “nome”, veja que as tags do Smarty ficam dentro dos “{}” mas isso pode ser configurado também.
Vá em seu navegador (de preferência Firefox, to brincando mas é o melhor) e digite o endereço para seu arquivo de controle no nosso case seria algo como “http://192.168.0.100/HelloWorldSmarty/index.php” e veja o resultado ele deve exibir a mensagem: “Hello World em Smarty, seja bem vindo Php de Verdade”.

Conclusão

Pronto pessoal esse foi nosso primeiro exemplo do Smarty, espero que tenham gostado e comentem e aí, nos próximos capítulos vamos trazer mais exemplos, demonstrando o poder dessa ferramenta, grande abraço.

Encontro PHP-SP 26/06/2008

Vai ser um encontro para fomentar a atividade do grupo de usuários de PHP-SP
que está sendo tocado pelo Marcelo Toscano e Rafael Dohms.

http://www.phpsp.org.br/

Também falaremos sobre as palestras de PHP e o encontro de
desenvolvedores de PHP que vai ocorrer no CONILSI em Outubro. Quem
estiver interessado em palestrar lá já pode comentar isso. O Augusto da
PHP Magazine é que está na organização do CONISLI tocando a parte de PHP.

Na 6a. feira temos o  Google Developer Day em Sampa quem quiser ir e conseguiu se inscrever, aparece por lá, vai ter uma turma do PHP-SP por la.

O Local ainda não esta definido já que não sabemos a quantidade de pessoas que vão, o que sabemos é que vamos nos encontrar na catraca do metro brigadeiro as 20 horas, já que naquela região tem varios barzinhos.

Hora e local

Catraca do metro Brigadeiro as 20 horas do dia 26/06/2008

PHPSC Conf

O Grupo de Usuários de PHP do Estado de Santa Catarina estará
promovendo evento em Chapecó oeste do estado em parceria com a
UnoChapecó nos dias 20 e 21 de Junho de 2008.

A grade de palestras pode ser encontrada no endereço:

http://www.phpsc.com.br/?page_id=10&language=pt

As inscrições podem ser realizadas no endereço:

http://www.unochapeco.edu.br/inscricoes/

E informações sobre hospedagem em Chapecó:

http://www.phpsc.com.br/?page_id=11&language=pt

Mão na massa – Zend Framework

A Tempo Real Eventos promoverá no dia 12 de julho o treinamento “Mão
na Massa” de Zend Framework.

Zend Framework faz parte do PHP Collaboration Project da Zend, um
esforço para criar padrões para o PHP no mundo e facilitar o
compartilhamento e reaproveitamento de código.

Ele ocorrerá das 9h00min às 17h00min em laboratório com 1 pessoa por
máquina.

O treinamento será dado por Flávio Gomes da Silva Lisboa, do SERPRO,
autor do livro “Zend Framework: desenvolvendo em PHP 5 orientado a
objetos com MVC”.

O endereço para inscrições é:

http://www.temporealeventos.com.br/?area=107

Bem vindo ao PHPSP

Olá, este post é somente para dizer que ainda estamos organizando nosso site e que em breve todo o conteúdo estará disponível.

Teremos agenda com os eventos que serão organizados pelo grupo onde todos poderão conferir, quando e onde vão acontecer os encontros além de tudo vamos falar muito sobre PHP e das novidades sobre as comunidades PHP do Brasil.

[]s

Marcelo Toscano