PHP 5.4 y Drupal 7

31

He oído que PHP 5.4 es más rápido que PHP 5.3.

¿Estaría bien que Drupal 7 se ejecute por debajo de 5.4, o varios módulos contribuidos pueden comenzar a romper el sitio?

De todos modos, si uso APC opcode cache, quizás 5.4, ¿no ofrecería ningún beneficio?

Gracias

John
fuente

Respuestas:

28

He comenzado a ejecutar Drupal 7 en PHP 5.4 solo con problemas menores en forma de avisos y advertencias.

Además de 7.12, necesitará estos dos parches para solucionar los problemas que hacen que PHP se queje:

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

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

Uno de estos parches ya se ha aplicado a -dev, por lo que estará en 7.13, y el otro probablemente entrará pronto. En todos los casos en los que puedo pensar de inmediato, la mala práctica que causó 5.4 advertencias ha sido el mal uso de las teclas de matriz.

La primera versión de esto se ve así:

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

Algunas veces, la llamada a la función devolverá una matriz o un objeto, ninguno de los cuales es una clave de matriz válida. En PHP 5.3, lo que realmente sucede, y en silencio, se ve así:

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

PHP 5.4, sin embargo, advierte que esto puede no ser lo que desea. La segunda versión es exactamente la misma, pero al revés.

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

que produce un mensaje de error como

Desplazamiento de cadena ilegal 'a_valid_key'

siempre que $may_be_a_stringsea ​​en realidad una cadena, no una matriz, ya que los únicos índices de cadena válidos son enteros.

Como los problemas son fáciles de entender y la solución es (en su mayoría) fácil de aplicar, descubrí que en varios casos, las versiones de -dev ya están actualizadas o los parches publicados en la cola, que probablemente entren rápidamente debido a Su simple naturaleza.

Después de algunas pruebas, no creo que 5.4 sea "peligroso" para ejecutar en producción, y ya he comenzado a ejecutar mis sitios pequeños y personales en él. Animaría a otros a hacer lo mismo, para que podamos evitar la absorción históricamente lenta de nuevas versiones de PHP.

Al momento de escribir, la última versión de APC, 3.1.9, no funciona con 5.4. Sin embargo, lo he construido y utilizado con éxito desde git.

El uso de APC probablemente reducirá el beneficio de rendimiento de actualizar la versión de PHP, pero no lo eliminará.

Letharion
fuente
+1 Me he estado preguntando sobre esto. ¿Ha notado algún aumento en el rendimiento en Drupal generalmente al pasar de 5.3 a 5.4? Si no le importa publicar un poco más sobre sus experiencias hasta el momento, me complacería otorgarle una recompensa por la respuesta :)
Clive
En pocas palabras, tener APC, tal vez no valga la pena, excepto si podría haber un aumento significativo en la velocidad, lo que parece no ser el caso.
Juan
@Clive, todavía tengo que hacer mediciones de rendimiento, aunque tengo la intención de hacerlo (desde hace bastante tiempo). ¿Hay algo en particular de lo que te estés preguntando? :)
Letharion
Más o menos, sí :) He estado jugando con la idea de actualizar a 5.4, pero como casi todo lo que hago parece ser Drupal en estos días, necesito asegurarme de que no va a hacer que mi vida sea mucho más difícil. Estoy de acuerdo con parchear algunos módulos por sitio, pero me preocupa que pronto sea difícil de mantener, y nuestros servidores de producción todavía están en 5.3, por lo que no estoy seguro de si eso podría causar algún problema. Cualquier comentario que tenga sobre ese tipo de cosas, o un poco de información sobre cuáles son las "malas prácticas" que generalmente están causando las advertencias (para asegurarse de que mis propios módulos estén bien) sería de gran ayuda :)
Clive
He actualizado la respuesta con lo que pude. :) Mantengo 5.3 instalado para poder cambiar fácilmente y hacer algunas pruebas de rendimiento. Con suerte recordaré volver aquí cuando lo haya hecho.
Letharion