PHP 5.3 parte 5: Outras melhorias
Neste último artigo da série vamos abordar algumas melhorias pequenas incluídas na versão 5.3 do PHP. Nos artigos anteriores já abordamos os principais recursos incluídos, como, por exemplo, Namespaces, Static Late Binding, Lambda e Closures, Arquivos Phar. Espero que tenham aproveitado esta série.
Mysqlnd
Mysqlnd, ou Mysql Native Driver para PHP, é um modo alternativo para se conectar no MySQL, disponível a partir do PHP 5.3 ou mais recente. Trabalha com as versão 4.1 ou mais recente do MySQL. É uma opção para substituir a libmysql, MySQL Client Library, oferecendo diversas vantagens sobre ela. Não há planos para remover a libmysql para as extensões do mysql. Foi adicionado somente um novo driver mais eficiente e você pode escolher qual dos dois usar.
Vantagens
As vantagens do mysqlnd são várias. O driver é totalmente integrado com o Zend Engine. É mais rápido para executar. A perfomance de diversas funções foram melhoradas. Não há necessidade de linkar com bibliotecas externas. A compilação se tornou mais fácil e simples. Não há necessidade de se preocupar com a versão do MySQL. Mysqldn utiliza PHP License que resolve alguns problemas relacionados com a licensa do MySQL.
Instalando mysqlnd
O novo driver mysqlnd pode ser utilizado nas três extensões do mysql existentes para PHP: mysql, mysqli e PDO_MYSQL. Ele vem junto com o código fonte do php, obtido em http://www.php.net.
Caso esteja compilando a partir do código fonte, basta passar as seguintes opções para o configure: –with-mysql=mysqlnd, –with-mysqli=mysqlnd e –with-pdo-mysql=mysqlnd.
Na distribuição oficial do PHP para Windows, nas versões >= 5.3, o Mysql Native Driver (mysqlnd) já vem habilitado por padrão. Portanto não há necessidade de nenhuma configuração adicional para usá-lo.
Limitações
O novo driver mysqlnd não trabalha com as versões 4.0 ou mais antigas do MySQL. Também não tem suporte à SSL e à compactação. A opção de compactação já teve o seu desenvolvimento iniciado. O suporte à SSL virá mais para frente.
Mysqlnd
Mysqlnd, ou Mysql Native Driver para PHP, é um modo alternativo para se conectar no MySQL, disponível a partir do PHP 5.3 ou mais recente. Trabalha com as versão 4.1 ou mais recente do MySQL. É uma opção para substituir a libmysql, MySQL Client Library, oferecendo diversas vantagens sobre ela. Não há planos para remover a libmysql para as extensões do mysql. Foi adicionado somente um novo driver mais eficiente e você pode escolher qual dos dois usar.
Vantagens
As vantagens do mysqlnd são várias. O driver é totalmente integrado com o Zend Engine. É mais rápido para executar. A perfomance de diversas funções foram melhoradas. Não há necessidade de linkar com bibliotecas externas. A compilação se tornou mais fácil e simples. Não há necessidade de se preocupar com a versão do MySQL. Mysqldn utiliza PHP License que resolve alguns problemas relacionados com a licensa do MySQL.
Instalando mysqlnd
O novo driver mysqlnd pode ser utilizado nas três extensões do mysql existentes para PHP: mysql, mysqli e PDO_MYSQL. Ele vem junto com o código fonte do php, obtido em http://www.php.net.
Caso esteja compilando a partir do código fonte, basta passar as seguintes opções para o configure: –with-mysql=mysqlnd, –with-mysqli=mysqlnd e –with-pdo-mysql=mysqlnd.
Na distribuição oficial do PHP para Windows, nas versões >= 5.3, o Mysql Native Driver (mysqlnd) já vem habilitado por padrão. Portanto não há necessidade de nenhuma configuração adicional para usá-lo.
Limitações
O novo driver mysqlnd não trabalha com as versões 4.0 ou mais antigas do MySQL. Também não tem suporte à SSL e à compactação. A opção de compactação já teve o seu desenvolvimento iniciado. O suporte à SSL virá mais para frente.
Ótimo post.
24/04/2012 5:53pm
(~12 anos atrás)
Vejo em vários sites posts referente a incompatibilidade da nova mysqlnd, porém não bejo a solução, como conectar no mysql 5 usando php 5.3.3.
minha conexão funcionava e agora não tá funcionando mais.
minha conexão funcionava e agora não tá funcionando mais.
15/10/2010 11:27am
(~14 anos atrás)
COMO EU FAÇO PARA PASSAR MEU PHORUM PARA O PORTUGUES?O QUE TENHO QUE FAZER..ONDE TENHO QUE COLOCAR?
ATT
CRIS
ATT
CRIS
06/04/2010 12:53pm
(~14 anos atrás)
Ah, sim! Uma coisa que não me lembro ter visto na sequência de artigos, mas que foi incorporado no PHP 5.3, foi a notação de strings com "nowdoc". Útil para gerar blocos de texto que contenham o símbolo "$" sem precisar escapá-los. Por exemplo, para mostrar um código PHP:
Utilizei ela para fazer um script que gera dinamicamente template de auto-completar do Eclipse.
echo <<<'CODIGOPHP' if ($a > 10) { echo '$a é maior que 10'; } CODIGOPHP;
Utilizei ela para fazer um script que gera dinamicamente template de auto-completar do Eclipse.
22/03/2010 2:50am
(~14 anos atrás)
Douglas, seu artigo ficou muito bom. Parabéns.
Uma coisa com relação a estas novas funcionalidades que eu não gostei foi a definição do uso de mysqlnd por padrão. Para a utilização em novos projetos eu nem acho tão problemático mas já para upgrades pode ser um tormento a falta de divesas funcionalidades existente tanto para mysqli como para PDO_MYSQL principalmente porque agora diversas configurações do PHP interferem diretamente com a execução de instruções no MySQL, como o memory_limit e o default_socket_timeout.
Eu até entendo que eles queriam se livrar de vez do problema da licença mas acho que no manual (em todas as funções que usam mysql) já deveria informar que a partir do 5.3 é preciso prestar atenção a este item já que tem diversos bugs relacionados a esta extensão. (Aquele da entrada ::1 no arquivo hosts do Windows Vista/7 é o pior)
No mais o core está cada vez melhor.
NOTA: O suporte a compressão já está disponível na versão 5.3.2 que saiu dia 4 de março de 2010.
Uma coisa com relação a estas novas funcionalidades que eu não gostei foi a definição do uso de mysqlnd por padrão. Para a utilização em novos projetos eu nem acho tão problemático mas já para upgrades pode ser um tormento a falta de divesas funcionalidades existente tanto para mysqli como para PDO_MYSQL principalmente porque agora diversas configurações do PHP interferem diretamente com a execução de instruções no MySQL, como o memory_limit e o default_socket_timeout.
Eu até entendo que eles queriam se livrar de vez do problema da licença mas acho que no manual (em todas as funções que usam mysql) já deveria informar que a partir do 5.3 é preciso prestar atenção a este item já que tem diversos bugs relacionados a esta extensão. (Aquele da entrada ::1 no arquivo hosts do Windows Vista/7 é o pior)
No mais o core está cada vez melhor.
NOTA: O suporte a compressão já está disponível na versão 5.3.2 que saiu dia 4 de março de 2010.
19/03/2010 10:46pm
(~14 anos atrás)