Atenção: o PHP 5.5 foi lançado em 20/06/2013. Confira as últimas notícias sobre o Lançamento do PHP 5.5.0.
Nos últimos meses, escrevi sobre as versões Alpha do PHP 5.5, que representa a nova "família" de versões 5.5.X. A princípio, seriam lançadas apenas quatro versões alpha, mas a equipe de desenvolvimento optou por lançar o Alpha 5 e o Alpha 6, com algumas correções e melhorias. Hoje, porém, foi lançada a primeira versão Beta. E, para nossa alegria, foram incorporadas algumas melhorias, além das correções. Lembrando que esta versão ainda não deve ser usada em produção. É apenas uma versão para testes.
Melhorias do PHP 5.5.0 Beta 1
Zend Optimizer+
A principal melhoria introduzida no PHP 5.5.0 Beta 1 foi a integração nativa do PHP com o Zend Optimizer+, que é uma extensão Zend que provê cache de código intermediário do PHP. Ele serve para aumentar a performance da aplicação. Para quem ainda não sabe, o PHP é uma linguagem interpretada, mas antes da execução do código, o interpretador gera um código intermediário. O cache desse código intermediário ajuda muito, pois evita que o interpretador precise interpretar todo código-fonte a cada execução.
Até a integração, esta extensão tinha o código fechado, mas era distribuída gratuitamente. Agora, além de ser integrada ao PHP, sua licença passou a ser livre, igual a licença do PHP.
Para utilizar o Zend Optimizer+, basta compilar o PHP com a diretiva --enable-opcache. Depois, basta configurar o php.ini, pedindo para incluir a extensão zend "opcache.so" (no Linux) ou "opcache.dll" (no Windows), conforme exemplo abaixo:
zend_extension = /usr/lib64/extensions/no-debug-non-zts-20121212/opcache.so
Note que você precisa passar o caminho completo para o arquivo binário que contém a extensão e esse caminho pode variar de acordo com a sua instalação.
Depois, basta inicializar seu servidor HTTP e conferir se a extensão foi habilitada com sucesso. No terminal, basta digitar o comando php -m e verificar se ao final da lista, aparece:
[Zend Modules] Zend OPcache
Ou então executar php -v e checar se aparece algo como:
PHP 5.5.0beta1 (cli) (built: Mar 21 2013 19:28:56) Copyright (c) 1997-2013 The PHP Group Zend Engine v2.5.0-dev, Copyright (c) 1998-2013 Zend Technologies with Zend OPcache v7.0.1-dev, Copyright (c) 1999-2013, by Zend Technologies
No ambiente web, você pode criar um arquivo que executa a função phpinfo() e checar se aparece a sessão "Zend OPcache".
Depois, basta configurar as diretivas da extensão no arquivo php.ini, para que tire o melhor proveito de seu hardware. Se fizer alguma alteração, lembre-se de reiniciar o servidor HTTP. Um exemplo de configuração é este abaixo:
opcache.memory_consumption = 128 opcache.interned_strings_buffer = 8 opcache.max_accelerated_files = 4000 opcache.revalidate_freq = 60 opcache.fast_shutdown = 1 opcache.enable_cli = 1
Para conhecer detalhes sobre cada diretiva, você pode consultar o link README do Zend Optimizer+. Muita gente conhece o APC, que provê funcionalidades semelhantes. Porém, os benchmarks apontam o Zend Optimizar+ como sendo ainda melhor.
A função array_column
A outra melhoria introduzida no PHP 5.5.0 Beta 1 foi a função array_column. Ela serve para obter determinada coluna de uma matriz. Algo muito simples de se fazer, mas agora é nativo da linguagem e possui uma performance melhor do que implementando manualmente. Vamos ver um exemplo de uso:
$matrizDisciplinas = [ ['nome' => 'Algoritmos e Estruturas de Dados', 'codigo' => 'AED', 'creditos' => 4], ['nome' => 'Banco de Dados', 'codigo' => 'BD', 'creditos' => 4], ['nome' => 'Arquitetura de Computadores', 'codigo' => 'ARQ', 'creditos' => 6] ]; // Obtendo um array com os codigos das disciplinas $codigos = array_column($matrizDisciplinas, 'codigo'); var_dump($codigos); /* array(3) { [0]=> string(3) "AED" [1]=> string(2) "BD" [2]=> string(3) "ARQ" } */
Além disso, poderíamos passar um terceiro parâmetro com a coluna que gostaríamos de usar para indexar o array retornado. Com a matriz do exemplo anterior, poderíamos criar facilmente um array indexado pelo código da disciplina e apontando para o nome da disciplina:
$matrizDisciplinas = [ ['nome' => 'Algoritmos e Estruturas de Dados', 'codigo' => 'AED', 'creditos' => 4], ['nome' => 'Banco de Dados', 'codigo' => 'BD', 'creditos' => 4], ['nome' => 'Arquitetura de Computadores', 'codigo' => 'ARQ', 'creditos' => 6] ]; // Obtendo um array com os codigos das disciplinas $nomes = array_column($matrizDisciplinas, 'nome', 'codigo'); var_dump($nomes); /* array(3) { ["AED"]=> string(32) "Algoritmos e Estruturas de Dados" ["BD"]=> string(14) "Banco de Dados" ["ARQ"]=> string(27) "Arquitetura de Computadores" } */
Alterar o nome dos processos executados com PHP-CLI
Uma última melhoria foi a possibilidade de mudar o nome dos processos executados via PHP-CLI (terminal).
O funcionamento é muito simples: basta utilizar as funções cli_set_process_title e cli_get_process_title para definir e obter o título do processo, respectivamente. Assim, podemos diferenciar uma execução de outra facilmente, conforme o exemplo, que definiu o título "teste do rubens":
$ ps -aef | grep teste rubens 2719 2764 2 20:33 pts/0 00:00:00 teste do rubens
Outras melhorias passadas
Além das melhorias do Beta 1, vale a pena citar algumas melhorias do Alpha 5 e Alpha 6:
- Possibilidade de configurar o diretório de dados temporários pela diretiva sys_temp_dir no php.ini.
- Melhorias na extensão MySQLi:
- Introdução do método mysqli_begin_transaction ou mysqli::begin_transaction.
- Introdução dos métodos mysqli_savepoint e mysqli_release_savepoint ou mysqli::savepoint e mysqli::release_savepoint
- Introdução das funções socket_recvmsg, socket_sendmsg e socket_cmsg_space na extensão socket.
0 comentários