PHP 5.4 та Drupal 7


31

Я чув, що PHP 5.4 швидше, ніж PHP 5.3.

Було б нормально, щоб Drupal 7 запускався під 5.4, або різні модулі, що надаються, можуть почати ламати сайт?

У будь-якому випадку, якщо я використовую кеш-код коду APC, можливо, 5.4, взагалі не принесе користі?

Спасибі

Відповіді:


28

Я почав запускати Drupal 7 на PHP 5.4 сам, маючи лише незначні проблеми у вигляді повідомлень та попереджень.

Зверху до 7.12 вам знадобляться ці два виправлення, щоб виправити проблеми, через які PHP скаржиться:

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

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

Один з цих патчів уже застосований до -dev, тому він буде в 7.13, а інший, швидше за все, незабаром. У всіх випадках, про які я можу відразу придумати, погана практика, що спричиняє попередження 5.4, - це неправильне використання клавіш масиву.

Перша версія цього виглядає приблизно так:

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

Інколи виклик функції повертає масив або об'єкт, жоден з яких не є дійсним ключем масиву. У PHP 5.3 те, що насправді і мовчки відбувається, виглядає приблизно так:

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

PHP 5.4, однак, попереджає, що це може бути не тим, чого ви хочете. Друга версія точно така ж, але навпаки.

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

яке видає повідомлення про помилку типу

Незаконне зміщення рядка "a_valid_key"

коли завгодно $may_be_a_string це насправді рядок, а не масив, оскільки єдиними дійсними рядковими індексами є цілі числа.

Оскільки проблеми легко зрозуміти, і виправити їх (в основному) легко, застосував, я виявив, що в декількох випадках версії -dev вже оновлюються, або патчі розміщуються в черзі, які, швидше за все, швидко заходять через їхня проста природа.

Після деяких тестувань я не відчуваю, що 5.4 є "небезпечним" для запуску у виробництво, і я вже почав запускати свої маленькі та особисті сайти на ньому. Я б закликав інших робити те ж саме, щоб ми могли уникнути повільного використання нових версій PHP.

На момент написання версії APC, остання версія 3.1.9, не працює з 5.4. Я успішно будував і використовував його з git, хоча.

Використання APC, ймовірно, зменшить перевагу продуктивності оновлення версії PHP, але не видалить її.


+1 Я про це цікавився. Чи помічали ви, що в Drupal приріст продуктивності зазвичай збільшується від 5,3 до 5,4? Якщо ви не заперечуєте доки трохи більше про свої враження, я рад би нагородити нагороду за відповідь :)
Клайв

Кілька слів, маючи APC, не варто біда, можливо, за винятком випадків, коли може бути значне збільшення швидкості, що, здається, не так.
Джон

@Clive, мені ще потрібно зробити вимірювання продуктивності, хоча я маю намір (вже досить давно). Ви щось цікавитесь? :)
Летаріон

Так, так :) Я бавився з ідеєю модернізації до 5.4, але, як і все, що я роблю, здається, Drupal в ці дні, я повинен бути впевнений, що це не зробить моє життя занадто складним. Я добре ламаю кілька модулів на одному сайті, але я переживаю, що скоро його буде важко підтримувати, а наші виробничі сервери все ще знаходяться на 5.3, тому я не впевнений, що це спричинить якісь проблеми. Будь-які зауваження, які ви мали про таке, або трохи інформації про те, що таке "погані практики", які, як правило, викликають попередження (щоб переконатися, що мої власні модулі в порядку) були б величезною допомогою :)
Clive

Я оновив відповідь тим, що міг. :) Я тримаю 5.3 встановлених, щоб я міг легко переключитися назад і зробити тестування продуктивності. Сподіваюсь, я згадаю, що повернуся сюди, коли доберуся до цього.
Летаріон

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.