PHP 5.4 e Drupal 7

31

Ouvi dizer que o PHP 5.4 é mais rápido que o PHP 5.3.

Seria bom para o Drupal 7 rodar na versão 5.4 ou vários módulos contribuídos podem começar a quebrar o site?

De qualquer forma, se eu usar o cache do opcode da APC, talvez 5,4, não ofereceria nenhum benefício?

obrigado

John
fonte

Respostas:

28

Comecei a rodar o Drupal 7 no PHP 5.4 sozinho, com apenas pequenos problemas na forma de avisos e avisos.

Além da versão 7.12, você precisará desses dois patches para corrigir os problemas que causam reclamações no PHP:

http://drupal.org/files/menu-link-save-1338282-15-d7.patch

http://drupal.org/files/database-query-clone-1414412-11-d7_0.patch

Um desses patches já foi aplicado ao -dev, então será na 7.13, e o outro provavelmente entrará em breve. Em todos os casos em que consigo pensar imediatamente, a má prática que causa avisos 5.4 tem sido o uso incorreto de chaves de matriz.

A primeira versão disso é assim:

$some_key = function_call();
return $some_array[$some_key];

Algumas vezes, a chamada de função retornará uma matriz ou um objeto, nenhum dos quais é uma chave de matriz válida. No PHP 5.3, o que realmente acontece silenciosamente é o seguinte:

$some_key = function_call();
return $some_array[(string)$some_key];

O PHP 5.4, no entanto, alerta que isso pode não ser o que você deseja. A segunda versão é exatamente a mesma, mas o contrário.

$some_key = 'a_valid_key';
$may_be_a_string = function_call();
return $may_be_a_string[$some_key];

que gera uma mensagem de erro como

Deslocamento de string ilegal 'a_valid_key'

sempre que $may_be_a_stringé realmente uma sequência, não uma matriz, pois os únicos índices de sequência válidos são números inteiros.

Como os problemas são fáceis de entender e a correção é (principalmente) fácil de aplicar, descobri que em vários casos, as versões -dev já estão atualizadas ou os patches publicados na fila, que provavelmente entram rapidamente devido a sua natureza simples.

Após alguns testes, não acho que a versão 5.4 seja "perigosa" para ser executada na produção e já comecei a executar meus sites pequenos e pessoais nele. Eu encorajaria outros a fazer o mesmo, para que possamos evitar a absorção historicamente lenta de novas versões do PHP.

No momento da redação deste artigo, a versão mais recente da APC, 3.1.9, não funciona com a versão 5.4. Eu construí com sucesso e usei a partir do git.

O uso da APC provavelmente reduzirá o benefício de desempenho da atualização da versão do PHP, mas não a removerá.

Letharion
fonte
+1 Eu estive pensando sobre isso. Você notou algum aumento de desempenho no Drupal, geralmente passando de 5,3 para 5,4? Se você não se importasse em postar um pouco mais sobre suas experiências até agora, ficaria feliz em recompensar a resposta :)
Clive
Em poucas palavras, ter a APC, talvez não valha a pena, exceto se houver um aumento significativo na velocidade, o que parece não ser o caso.
John
@Clive, ainda não fiz medições de desempenho, embora pretenda (já há algum tempo). Você está pensando em algo em particular? :)
Letharion 06/04
Eu estou brincando com a idéia de atualizar para a versão 5.4, mas como praticamente tudo o que faço parece ser Drupal hoje em dia, preciso ter certeza de que não tornará minha vida muito mais difícil. Estou bem com a correção de alguns módulos por site, mas estou preocupado que em breve seja difícil de manter e nossos servidores de produção ainda estejam na versão 5.3, portanto, não tenho certeza se isso causaria problemas. Quaisquer comentários que você tiver sobre esse tipo de coisa ou informações sobre quais são as "más práticas" que geralmente causam os avisos (para garantir que meus próprios módulos estejam bem) seriam uma grande ajuda :)
Clive
Atualizei a resposta com o que pude. :) Eu mantenho o 5.3 instalado para que eu possa voltar com facilidade e fazer alguns testes de desempenho. Espero que eu me lembre de voltar aqui quando eu chegar lá.
Letharion
2

Você deve evitar o PHP 5.4, pois não há APC estável para ele. O desempenho do PHP 5.3 + APC seria maior que 5.4.

vamur
fonte
Agora existe uma versão beta lançada. stackoverflow.com/questions/9611676/…
Letharion