Erro ao compilar o PHP com suporte ao GD

You can see this post in english too.

Olá a todos!

Se tentar compilar o PHP com a opção –with-gd em um sistema que possui a versão 1.4 ou superior da libpng, terá um erro de compilação.

A solução enquanto a turma do PHP não libera a próxima versão estável com o acerto é bem simples, mas requer que altere uma linha no código-fonte do PHP.

Para quem está com pressa:

  • Abra o arquivo ext/gd/libgd/gd_png.c, vá até a linha 148 e encontrará isto:
    if (!png_check_sig (sig, 8)) { /* bad signature */
  • Comente-a (melhor) ou remova-a (pior), substituindo-a por isto:
    if (png_sig_cmp (sig, 0, 8)) { /* bad signature */

Se quer saber de todos os detalhes, visite esta página no website do PHP.

unset ($year); $year = new Year(2010);

Você pode ler este post em português também.

Hello!

2009 ended as the begin of 2010: rush, despite of my vacation. Moreover, marvelous vacation.

Dear visitors, I apologize for the lack of website update. Soon, another post about PHP performance.

My first hint for this year is: Ivo Nascimento started with something that we call mini-podcast. Each one has 5 minutes, where something about PHP is coverage.

Check it! And a very happy 2010 for us!

Cheers!

unset ($year); $year = new Year(2010);

You can see this post in english too.

Olá!

Fim de ano corrido e início igualmente corrido, apesar das férias. Aliás, excelentes férias.

Aos poucos visitantes, peço desculpas pela falta de atualização. Em breve, mais um post sobre performance do PHP.

Como primeira dica, vai aí: O Ivo Nascimento começou com algo que podemos chamar de mini-podcast. Cada um tem 5 minutos, onde há a cobertura de algum assunto relacionado ao PHP.

Vale a pena conferir. E um 2010 muito feliz para todos nós!

Até!

Echo, print, printf: Who’s the fastest?

Você pode ler este post em português também.

Who’s the fastest at CPU? Echo, Print or printf?

Sample material:

  • Machine: HP Pavilion dv6058cl Notebook;
  • Operation system: ArchLinux, x86-64 architecture;
  • PHP version 5.3.0
  • Environment: Bash, without X. XFS filesystem.
  • File echo.php:
    <?php for ($i = 0; $i < 100000; $i++) { echo "This is a simple testn"; } ?>
  • File print.php:
    <?php for ($i = 0; $i < 100000; $i++) { print "This is a simple testn"; } ?>
  • File printf.php:
    <?php for ($i = 0; $i < 100000; $i++) { printf("This is a simple testn"); } ?>

Method:

  1. Run each of the PHP script 100 times, and store the execution time of each one:

    for i in `seq 1 100`; do (time php echo.php > o_echo.txt) 2>> t_echo.txt; done;

    for i in `seq 1 100`; do (time php print.php > o_print.txt) 2>> t_print.txt; done;

    for i in `seq 1 100`; do (time php printf.php > o_printf.txt) 2>> t_printf.txt; done;

    Note: Between each test, the PC was turned off and turned on again after 30 seconds;

  2. To consider only the output line sys of the time command, ’cause only the CPU time was considered on this test;
  3. To order the time of execution of each script, from the lowest to the highest;
  4. Throw out the first and last 25 results of execution time of each script;
  5. To plot the remaining sample results and trace the average line of execution for each command.

The result? Here is it:

Gráfico resultante

Conclusion: The test shows that the print command is the fastest when you need to output text. The time to redirect and store the output of each file were counted as the execution of the script (possible failure).

Future test ideas:

  • Long strings (output of a NOWDOC or HEREDOC variable);
  • To interpolate numeric and strings variables together.

Echo, print, printf: Quem é mais rápido?

You can see this post in english too.

Quem é mais rápido na CPU? Echo, Print ou Printf?

Material de teste:

  • Máquina: HP Pavilion dv6058cl Notebook;
  • Sistema operacional: ArchLinux, arquitetura x86-64;
  • PHP versão 5.3.0
  • Ambiente: Bash, sem X. Sistema de arquivos XFS.
  • Arquivo echo.php:
    <?php for ($i = 0; $i < 100000; $i++) { echo "This is a simple testn"; } ?>
  • Arquivo print.php:
    <?php for ($i = 0; $i < 100000; $i++) { print "This is a simple testn"; } ?>
  • Arquivo printf.php:
    <?php for ($i = 0; $i < 100000; $i++) { printf("This is a simple testn"); } ?>

Método:

  1. Executar cada um dos scripts PHP 100 vezes, armazenando o tempo de execução de cada um:

    for i in `seq 1 100`; do (time php echo.php > o_echo.txt) 2>> t_echo.txt; done;

    for i in `seq 1 100`; do (time php print.php > o_print.txt) 2>> t_print.txt; done;

    for i in `seq 1 100`; do (time php printf.php > o_printf.txt) 2>> t_printf.txt; done;

    Observação: Entre cada teste, o PC foi desligado e religado após 30 segundos;
  2. Considerar apenas a linha de resultado sys do comando time, pois apenas o tempo de CPU importa para este teste;
  3. Ordenar os tempos de execução de cada script, do menor para o maior;
  4. Descartar os 25 primeiros e últimos tempos de execução de cada script;
  5. Plotar a amostragem restante e traçar a linha média de tempo de execução de cada comando.

O resultado? Aqui está:

Gráfico resultante

Conclusão: O teste mostra que o comando print é o mais rápido na necessidade de saída de texto. Os tempos para redirecionar e armazenar a saída de cada arquivo foram contabilizados como sendo da execução do script (possível falha).

Idéias para testes futuros:

  • Strings longas (saída de uma variável NOWDOC ou HEREDOC);
  • Interpolar variáveis numéricas e strings juntas.

PHP, Java or ASP?

Você pode ler este post em português também.

Recently a friend asked me about PHP. What you will read here is the reply that I sent to him.

=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
Each language has its good and bad sides. It depends of “where” you will use them, and ’cause this I make the comparison as web developer. And I will do it comparing the ASP (not ASP.NET), PHP and Java languages.

The factors that I use to make a choice of a language are:

  • Typing (weak, strong or dynamic. The most common is the requirement to declare a variable / type to use it);
  • Portability (how it can run in heterogeneous environments);
  • Scalability (how difficult is to increase / improve the environment for running the application);
  • Development tools (What exists to improve the development experience);
  • Readability (the learning curve of its syntax);
  • OOP compliance (as provided by the OO pattern);
  • Bureaucracy (How much you’re MUST to follow to use it).

Based on the topics above:

  1. Typing: PHP and ASP have weak typing. Java has strong typing. PHP/ASP therefore tends to give more freedom to develop. Java to be more orthodox, it’s more organized. As I prefer the freedom, point to the PHP and ASP.
  2. Portability: Point to PHP. For web applications, it supports more environments than Java. And if none of available binaries work for you, you can download the source code of PHP and recompile it on the freak environment that you’re building. ASP here, joke.
  3. Scalability: Here, less is more. Less work to scale an application, turns it to be better to scale. Ignoring the design pattern factors that should be followed to allow rise the environment, I think that PHP is the best. Unfortunately I have no facts to prove it. So, point to the three languages.
  4. Development tools: Point to PHP. This language has almost everything that you can imagine to help or give base for development: the Internet there are giants repositories of projects/classes/functions where you can get almost everything for not to start from scratch.
  5. Readability: Point to PHP. As a language with weak typing and low bureaucracy, the learning curve of the language is very low. There are several kits on the Internet ready to start developing, and indeed, many of them don’t need to be installed (running directly from a pendrive, by example). ASP in the second, and because of its complexity/bureaucracy, Java last.
  6. OO compliance: Point to Java, with PHP closest to him (especially after the new version 5.3, which support namespaces and other cool things). And yes, PHP is OO (1). ASP isn’t. Just to compare, namespaces are like packages in Java.
  7. Bureaucracy: Point to PHP. Mainly due to the items 1), 5) and 6). I say that PHP is like Delphi, which provides many OO resources, but without forcing you to use them. Java is highly bureaucratic. Search for examples on Google and you will see that the difference is obvious.

This is an excellent theme for a bar table. There are several other factors, like as maintainability, robustness, reuse, development speed. But is subject for another post.

Adding the score:
a) PHP = 6 points;
a) ASP = 2 points;
a) Java = 2 points.

Done. PHP is better. I swear that I tried to be impartial.

😉

=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*

References:

(1) – OOP manual at PHP site.

PHP, Java ou ASP?

You can see this post in english too.

Recentemente, um amigo me questionou sobre o PHP. O que lerá aqui é a resposta que enviei a ele.

=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
Cada linguagem tem seu lado bom e ruim. Tudo depende do “praquê” a utilizaremos, por isso realizarei a comparação como desenvovedor de aplicações para a WEB. E farei isso comparando as linguagens ASP (não ASP.NET), PHP e Java.

Os fatores que costumo levar em conta para utilizar uma linguagem são:

  • Tipagem (fraca, forte ou dinâmica. O exemplo mais comum é a obrigatoriedade de declarar uma variável/tipo para poder usá-la);
  • Portabilidade (capacidade de execução em ambientes heterogêneos);
  • Escalabilidade (o quão difícil é aumentar/melhorar o ambiente de execução da aplicação);
  • Ferramentas de desenvolvimento (o que existe para melhorar a experiência de desenvolvimento);
  • Legibilidade (a curva de aprendizado de sua sintaxe);
  • Adequação à OO (quanto de OO ela disponibiliza);
  • Burocracia (Quantas coisas você é OBRIGADO a seguir para utilizá-la).

Com base nos tópicos acima:

  1. Tipagem: PHP e ASP possuem tipagem fraca. O Java possui tipagem forte. PHP/ASP por isso tende a dar mais liberdade ao desenvolvimento. Java por ser mais ortodoxo, é mais organizado. Como prefiro a liberdade, ponto para o PHP e para o ASP.
  2. Portabilidade: Ponto para o PHP. Para aplicações web, ele é acoplável a mais ambientes que o Java. E se nenhum binário disponível te servir, baixe o código-fonte do PHP, e recompile-o no ambiente esdrúxulo que estiver montando. ASP aqui, piada.
  3. Escalabilidade: Aqui, menos é mais. Quanto menor o trabalho para escalar uma aplicação, melhor ela será. Desconsiderando os fatores de padrão de projeto que devem ser seguidos para permitir um escalonamento, acho que o PHP é o que escalona melhor. Mas isso é achismo, infelizmente não tenho fatos para comprovar isso. Por isso, ponto para os três.
  4. Ferramentas de desenvolvimento: Ponto para o PHP. Esta linguagem tem quase tudo que você consiga imaginar para auxiliar ou dar base para seu desenvolvimento: na Internet há repositórios de projetos/classes/funções gigantes de onde você pode tirar de praticamente tudo para não começar do zero.
  5. Legibilidade: Ponto para o PHP. Por ser uma linguagem de tipagem fraca e de baixa burocracia, a curva de aprendizado da linguagem é muito baixa. Existem na Internet vários kits prontos para começar a desenvolver, e inclusive, muitos deles não precisam nem ser instaláveis (podem ser executados num pendrive, por exemplo). ASP em segundo, e devido sua complexidade/burocracia, Java por último.
  6. Adequação à OO: Ponto para o Java. PHP a segue muito de perto (principalmente depois da nova versão 5.3, que suporta namespaces e outras coisas mais). PHP é sim OO (1). O ASP não é. Só para comparar, namespaces são como os packages do Java.
  7. Burocracia: Ponto para o PHP. Principalmente devido os itens 1), 5) e 6). Costumo dizer que PHP é como o Delphi, que disponibilizava muitos recursos de OO mas não te obrigava a usar. Java já é altamente burocrático neste ponto. Pesquise por exemplos no Google e verá que a diferença é clara.

Este é um excelente tema para uma mesa de bar. Existem vários outros fatores a levar em conta, como manutenibilidade, robustez, reuso, velocidade de desenvolvimento. Mas fica para outro post.

Somando os pontos:
a) PHP = 6 pontos;
a) ASP = 2 pontos;
a) Java = 2 pontos.

Pronto, o PHP é melhor. Juro que tentei ser imparcial.

😉

=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*

Referências:

(1) – Manual de POO no website do PHP.