Posts Tagged ‘php’

Podcast do PHPSP já está disponível

março 1st, 2010

Durante a Campus Party 2010 recebi um convite do pessoal do PHPSP, grupo de desenvolvedores PHP, a gravar um podcast ao vivo durante o evento. Pra quem quiser ouvir, ele já está disponível em http://phpsp.org.br/2010/02/24/phpspcast-6-ao-vivo-da-campus-party-qa/.

PHP no prompt de comando

novembro 12th, 2009

Esse mês comecei a trabalhar na LBS, empresa resultante da fusão do Apontador com Maplink. Um dos meus primeiros trabalhos era criar um importador de CSV. Algo rotineiro, mas que resolvemos fazer sem utilizar interface web.

Tudo rodaria no shell do linux ou no prompt do DOS no windows.  Vamos ver como isso funciona no Windows?

Passo 1: Pra facilitar o trabalho, localize onde está o seu php.exe e adicione o path do diretório na variavel de ambiente Temp do Windows. Para isso clique nas propriedades do meu computador, na guia Avançado, e depois no botão Variáveis de Ambiente. Localize na lista inferior a variavel TEMP e acrescente o path do seu php.exe conforme o padrão que já existe.

Dessa forma não precisaremos ir até o diretório do PHP pra chamá-lo quando precisarmos. Podemos apenas digitar php no prompt de comando e o sistema já entenderá quem estamos procurando.

Passo 2: crie um arquivo qualquer.php que imprima o valor da variável $argv. Esta é uma variável pré-declarada que contém um array com todos os parâmetros que podemos passar via linha de comando. (Tente apenas um <?php var_dump($argv)?>)

Passo 3: pronto. Agora é só executar o arquivo com o comando
php -f c:\caminho\do\qualquer.php -- hello=world foo=bar
Tudo que for passado após -- é entendido como parâmetro. Fique atendo aos espaços para não ter surpresa. O nosso exemplo retornaria algo do tipo:

array(3) {
[0]=>
string(31) “d:\wamp\www\testes\qualquer.php”
[1]=>
string(11) “hello=world”
[2]=>
string(7) “foo=bar”
}

Passo 4: Agora é só tratar os parâmetros (ou seja, o array $argv) e se divertir com os scripts na linha de comando. Além de ser bem mais rápido que executar na web, não é necessário ter o apache (ou o servidor web) sendo executado.

Gostou? Conhece outro jeito de fazer? Comente!

Windows Authentication no PHP

setembro 30th, 2009

Windows Authentication ou Autenticação Integrada no PHP não poderia ser tão fácil.

Hoje ao ler uma entrevista com Manuel Lemos da Microsoft, ele explicou como é simples o funcionamento do recurso em sistemas PHP.

Como integrar o  Windows Authentication no PHP?
Se você roda o php no IIS, para ativar o recurso basta ativar a autenticação NTLM em páginas PHP.
No Apache, para ativar o recurso, basta ativar o módulo mod_ntlm no seu httpd.conf.
O módulo para o Apache pode ser baixado em http://modntlm.sourceforge.net/.

Feito isso, basta usar a variável de servidor $_SERVER['LOGON_USER'] para recuperar o nome do usuário logado e checar se ele tem acesso à area ou módulo em questão.

Fácil né?

Fonte: http://www.phpclasses.org/blog/post/102-Microsoft-promotes-the-careers-of-PHP-professionals.html

Profiler no PHP com Cachegrind

agosto 29th, 2009

Cachegrind é um cache profiler disponível no PHP e em diversas outras linguagens. Ele faz simulações detalhadas do cache do processador, e o mais legal de tudo: mostra quanto cada linha de código carregou o processador em milisegundos, ou %. Ele pode mostrar informações por função, por  módulo ou um resumo completo do programa.

Habilitando o cachegrind o programa pode ficar de 20 a 100 vezes mais lento, por isso vamos deixar pra brincar com ele só nos ambientes de teste/desenvolvimento, ok?

Cachegrind is a cache profiler. It performs detailed simulation of the I1, D1 and L2 caches in your CPU and so can accurately pinpoint the sources of cache misses in your code. It identifies the number of cache misses, memory references and instructions executed for each line of source code, with per-function, per-module and whole-program summaries. It is useful with programs written in any language. Cachegrind runs programs about 20–100x slower than normal.

Ouvi sobre cachegrind no Podcast do PHPSP, o PHPSPCast n. 3.  Pra mim o recurso ainda é novidade, mas vou mostrar como funciona.

Configurando o xDebug

No mês passado fiz um post explicando sobre como fazer debug no PHP com Wamp e Netbeans, usando o XDebug. Siga os passos até terminar de instalar o xDebug no seu PHP/Wamp Server.

Feito isso, vamos abrir o php.ini e configurar a pasta do profiler, onde queremos salvar os arquivos de cachegrind para leitura. Para isso basta adicionar (ou modificar) as linhas a seguir na seção [XDebug]:

xdebug.profiler_enable=1
xdebug.profiler_output_dir=”c:\wamp\xdebug

E pronto. Agora é só executar suas páginas normalmente e olhar na pasta para ver se estão sendo gerados arquivos com nome cachegrind.out. Agora precisaremos de uma ferramenta para analizar esses arquivos.

Analizando arquivos de profiler com WinCacheGrind

WinCacheGrind é gratuíto e pode ser baixado em http://sourceforge.net/projects/wincachegrind/. Como o nome diz, ele só funciona no Windows. Mas há dezenas de aplicativos que fazem isso (até melhores) via web e também em outros OS.

Após instalá-lo, basta abrir os arquivos cachegrind gerados pelo xdebug. Ele automaticamente analiza o arquivo e tudo mais. Não há muito o que explicar sobre ele. Veja:

Tela do WinCacheGrind
Você pode consultar linha por linha, ou um resumo completo do fonte.  Ele ainda mostra em formato de árvore, para que você possa ir abrindo as classes e ver que trecho prejudicou mais a performance do seu programa.

Como disse, há dezenas de programas que fazem a leitura da saída de profiling. Esse foi o que eu experimentei. Há o KCachegring que roda em vários sistemas operacionais, ou o WebGrind que roda no browser.

Espero ter dado o ‘empurrãozinho’ que você precisava pra melhorar a forma com que você fazia análise de performance.

Colabore! Deixe seu comentário!

Outras fontes

WebGrind – http://code.google.com/p/webgrind/
PHPSP – http://www.phpsp.org.br/ e http://phpsp.org.br/2009/05/04/analise-de-performance/
KCachegrind – http://kcachegrind.sourceforge.net/
WinCacheGrind – http://sourceforge.net/projects/wincachegrind/

Debugando em PHP com Wamp e NetBeans

junho 16th, 2009

Hoje vou falar um pouco sobre debug no php. Um recurso pouco explorado pela maioria dos programadores php que conheço, e até por mim mesmo que apesar de ter mais de 5 anos de experiência com a linguagem, só agora resolvi fazer um debug de verdade funcionar.

Debugar códigos na maioria das linguagens de programação, permite que você navegue por dentro do código e suas funções na medida que o programa ou página é executada, podendo acompanhar o valor de variáveis e inclusive alterá-las, o que ajuda em 90% o desenvolvedor a encontrar falhas ou pontos específicos em uma aplicação.

Então vamos ao que interessa…

Para ser rápido, presumimos que você tenha instalado em seu ambiente windows o pacote Wamp e o NetBeans 6.5.x, ambos com suas configurações originais.

- Fazer download do Wamp Server.
- Fazer download do NetBeans 6.5.1  para PHP.

Verifique se seu Wamp está instalado corretamente executando-o e acessando o site http://localhost/ no seu navegador. Se aparecer a página do Wamp é porque tudo ocorreu direitinho.

Adicionando exceção ao firewall do windows1. A primeira coisa que vamos fazer é ir até o Firewall do windows, no Painel de Controle e adicionar a porta TCP 9000 como exceção, para evitar problemas com o debug no netbeans.

2. Na seqüência, abra seu NetBeans e vá ao menu Ferramentas -> Opções (Tools -> Options) e clique no ícone do PHP. Em seguida verifique se a porta de depuração é a 9000, e altere caso não seja. Clique em OK.

3. Você precisará de uma extensão de debug do php. No meu caso, utilizei o XDebug. Veja a versão do seu PHP na sua pagina inicial do Wamp Server (http://localhost/) e faça o download da .DLL na versão apropriada:

- Faça download do XDebug para versão do PHP 5.2.
- Disponível também para versão 5.3 aqui.
- Consulte outras versões.

4. Coloque o arquivo DLL que acabou de baixar na pasta EXT do PHP. Se você instalou o wamp de forma padrão esta pasta será “C:\wamp\bin\php\php5.2.5\ext” ou algo parecido dependendo da versão instalada.

5. Feito isso, inicie o Wamp Server (caso ele não esteja iniciado), clique no ícone dele ao lado do relógio e procure pelo arquivo php.ini. (Menu: PHP->php.ini).

6. O arquivo abrirá no bloco de notas. Vá até o final do arquivo e adicione as linhas abaixo:

[XDebug]
; Only Zend OR (!) XDebug
zend_extension_ts = “C:\wamp\bin\php\php5.2.5\ext\php_xdebug-2.0.4-5.2.8.dll
; XAMPP and XAMPP Lite 1.7.0 and later come with a bundled xdebug at <XAMPP_HOME>/php/ext/php_xdebug.dll, without a version number.
xdebug.remote_enable=1
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
; Port number must match debugger port number in NetBeans IDE Tools > Options > PHP
xdebug.remote_handler=dbgp
xdebug.profiler_enable=1
xdebug.profiler_output_dir=”c:\wamp\xdebug”

Altere o caminho da dll se necessário, colocando o caminho exato da pasta e do arquivo que você acabou de fazer download no passo anterior. Ele pode variar dependendo da versão conforme falei.

7. Salve o arquivo e reinicie todos os serviços do wamp na opção “Reiniciar todos os serviços” que aparece no menu do relógio.

8. Para confirmar a instalação, acesse o link do phpinfo() que aparece na página inicial do seu wamp (http://localhost/?phpinfo=1).

9. Se tudo correu bem, o final do primeiro trecho do phpinfo deverá ser parecido com este:
phpinfo com xdebug instalado

Dica:  se você já tinha uma instalação anterior, certifique-se de que não há componentes de debug do zend instalados e configurados no php.ini. Os dois não se entendem muito bem.

Finalmente debugando no NetBeans

Se você chegou até aqui, parabéns. O mais difícil já foi (eu acho). Agora debugar fica mais fácil.

Abra seu NetBeans e crie um arquivo PHP qualquer ou abra um projeto existente. Diferente de outros meios de debug,marcando o breakpoint no netbeans nada precisará ser alterado no código.

Vá até a linha que deseja que o debug comece a ser executado e pressione Ctrl + F8 ou clique no número da linha ao lado esquerdo do código. (Veja ao lado)

Em seguida, mande depurar o arquivo apertando Ctrl + Shift + F5 ou indo ao menu “Depurar -> Depurar arquivo.php”.

Na janela que se abrirá marque a opção PHP do lado do servidor.

breakpoint no netbeansUma nova janela do navegador se abrirá e a execução irá parar no ponto de interrupção que determinamos com uma setinha verde apontando a linha do código que está sendo executada.  Você pode alterar o valor das variáveis em tempo de execução, ou criar observadores (watchers) para elas.

Para continuar a execução basta apertar F5 ou o botão continue-debugging-session no próprio NetBeans.

Isso tudo que falei é apenas o básico do processo de debug que o netbeans permite fazer. Existem outros métodos como utilizando o plugin FirePhp para o Firefox, mas não falarei disso desta vez.

Espero que esta seja uma boa alternativa pra você no lugar dos velhos ‘echos’ perdidos no seu código fonte. ;)

Para ver e aprender mais sobre o assunto, veja a matéria sobre debugging na página especial da netbeans (em inglês). Tem um passo-a-passo do processo de debug bem bacana.

Update (09-dez-2009): as versões que sugeri para download são para PHP’s compilados com VC6. Veja qual a forma de compilação do seu php no phpinfo(), no item ‘Compiler’. Ex: MSVC6 (Visual C++ 6.0) corresponde ao VC6 do Xdebug. Baixe a versão adequada ao seu PHP, não esquecendo de substituir o nome da DLL no php.ini confome mostrado acima.

I Encontro PHPSP

fevereiro 8th, 2009

Neste Sábado(7-fev) estive em São Paulo, no primeiro encontro do grupo PHPSP, comunidade de programadores de PHP (linguagem de programação web) que existe desde 2002 e surgiu a partir de um grupo de discussão do Yahoo!.

I PHPSP - O AlmoçoTive o prazer de conhecer e reencontrar pessoas que trabalharam na RCT, empresa por onde passei e fiz boas amizades. No evento contamos com apresentações sobre o Zend Framework e sobre a certificação Zend (empresa que criou a linguagem), com os 4 profissionais certificados: Augusto Pascutti, Anderson Casimiro, Ivo Nascimento, Marcelo Toscano e Rafel Dohms. Eles fazem parte do grupo de 54 programadores certificados em PHP do Brasil.

Com uma estrutura bacana cedida pela empresa Burti, pude matar um pouco a saudade da linguagem e ver o quanto falta para chegar a uma certificação deste tipo. A certificação Zend é algo realmente complexo e cheia de pegadinhas. Durante 3 horas do evento realizamos um simulado da certificação além de participar de sorteios de brindes, descontos e vouchers para certificação.

I PHPSPDesde que entrei na Dotz, só programo em PHP quando estou em casa, nos meus projetos pessoais como o novo e-commerce da Oitavo Pecado.

Neste evento pude concluir que o PHP evoluiu bastante, ou melhor, sempre foi melhor do que imaginei. Todos os recursos e críticas que os programadores de outras linguagens fazem a respeito foram rebatidas. Fora do país, o PHP já é usado por grandes empresas como bancos, geradoras de energia, e muitas outras empresas (Digg, Yahoo!, Facebook, etc).

O que ocorre no Brasil é que a maioria dos programadores da linguagem são os famosos ’sobrinhos’¹, que queimam a linguagem em aplicações e sites frágeis e mal programados. Vejo este como sendo o lado negativo de termos uma linguagem de fácil aprendizagem.

Parafraseando o palestrante Edgar Ferreira, que falou sobre o Zend Framework, posso dizer que: PHP é pequeno quando usado em aplicações simples, mas robusto quando precisamos que ele seja assim. Ele apenas funciona.

Não é raro ouvir casos de sucesso em performance com a dupla PHP + MySQL a um custo extremamente baixo se comparado com SQL Server + .NET.

O evento foi uma desconferência animada e que terminou num evento informal chamado PHPinga, que dispensa definições.

Vamos ver se isso foi o suficiente para abrir o apetite por uma certificação da Zend. Pelo menos a revista PHP Architect eu fiquei com vontade de assinar…

¹sobrinhos – termo usado no evento para se referir à maioria de programadores curiosos na linguagem e que queimam a credibilidade da mesma com trabalhos ruins.

1a desconferência de PHP do PHPSP em São Paulo

janeiro 12th, 2009

A comunidade PHPSP reúne programadores PHP de todo estado de SP está organizando o primeiro encontro da comunidade.
Quando: 07/02/2009
Onde: Burti Mooca ( Rua Dias Leme 130 – Moóca – São Paulo )
Valor: 1Kg de alimento não-perecível

O evento terá simulados da certificação Zend e palestras sobre o Zend Framework.

Para realizar a inscrição é necessário fazer o cadastro no site
http://phpsp.org.br/i-encontrophpsp

Eu estarei lá matando a saudade e me atualizando. E você?