PHP 5.4 und Drupal 7

31

Ich habe gehört, dass PHP 5.4 schneller ist als PHP 5.3.

Wäre es für Drupal 7 in Ordnung, unter 5.4 zu laufen, oder könnten verschiedene Module die Site beschädigen?

Wie auch immer, wenn ich den APC-Opcode-Cache verwende, vielleicht 5.4, würde das überhaupt keinen Nutzen bringen?

Vielen Dank

John
quelle

Antworten:

28

Ich habe angefangen, Drupal 7 auf PHP 5.4 selbst mit nur geringfügigen Problemen in Form von Hinweisen und Warnungen auszuführen.

Zusätzlich zu 7.12 benötigen Sie diese beiden Patches, um die Probleme zu beheben, die zu einer Beschwerde von PHP führen:

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

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

Einer dieser Patches wurde bereits auf -dev angewendet, wird also in 7.13 erscheinen, und der andere wird wahrscheinlich bald erscheinen. In allen Fällen, an die ich sofort denken kann, war die schlechte Praxis, die 5.4 Warnungen verursacht, die schlechte Verwendung von Array-Schlüsseln.

Die erste Version davon sieht folgendermaßen aus:

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

Manchmal gibt der Funktionsaufruf ein Array oder ein Objekt zurück, von denen keiner ein gültiger Array-Schlüssel ist. In PHP 5.3 sieht das, was tatsächlich und stillschweigend passiert, folgendermaßen aus:

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

PHP 5.4 warnt jedoch davor, dass dies möglicherweise nicht das ist, was Sie wollen. Die zweite Version ist genau das gleiche, aber umgekehrt.

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

das ergibt eine Fehlermeldung wie

Unzulässiger String-Offset 'a_valid_key'

Wann immer $may_be_a_stringes sich tatsächlich um eine Zeichenfolge handelt, nicht um ein Array, da die einzigen gültigen Zeichenfolgenindizes Ganzzahlen sind.

Da die Probleme leicht zu verstehen und die Lösung (meistens) leicht anzuwenden ist, habe ich festgestellt, dass in einigen Fällen -dev-Versionen bereits aktualisiert wurden oder Patches in der Warteschlange veröffentlicht wurden, die wahrscheinlich aufgrund von schnell eintreten werden ihre einfache Natur.

Nach einigen Tests habe ich nicht das Gefühl, dass es "gefährlich" ist, 5.4 in der Produktion auszuführen, und ich habe bereits damit begonnen, meine kleinen und persönlichen Websites darauf auszuführen. Ich würde andere dazu ermutigen, dasselbe zu tun, damit wir die historisch langsame Einführung neuer PHP-Versionen vermeiden können.

Zum Zeitpunkt des Schreibens funktioniert APCs neueste Version 3.1.9 nicht mit 5.4. Ich habe es aber erfolgreich von Git gebaut und benutzt.

Durch die Verwendung von APC wird wahrscheinlich der Leistungsvorteil eines Upgrades der PHP-Version verringert, jedoch nicht entfernt.

Letharion
quelle
+1 Ich habe mich darüber gewundert. Haben Sie Leistungssteigerungen in Drupal im Allgemeinen von 5.3 auf 5.4 bemerkt? Wenn es Ihnen nichts ausmacht, ein bisschen mehr über Ihre bisherigen Erfahrungen zu posten, würde ich gerne ein Kopfgeld für die Antwort ausstellen :)
Clive
In wenigen Worten, APC zu haben, lohnt sich vielleicht nicht, es sei denn, es könnte zu einer signifikanten Geschwindigkeitssteigerung kommen, was anscheinend nicht der Fall ist.
John
@Clive, ich muss noch Leistungsmessungen durchführen, obwohl ich das vorhabe (seit geraumer Zeit). Gibt es etwas Besonderes, über das Sie sich wundern? :)
Letharion
Irgendwie ja :) Ich habe mit der Idee gespielt, auf 5.4 zu upgraden, aber so ziemlich alles, was ich tue, scheint heutzutage Drupal zu sein. Ich muss sicher sein, dass es mein Leben nicht zu sehr erschwert. Es ist in Ordnung, ein paar Module pro Site zu patchen, aber ich mache mir Sorgen, dass es bald schwierig wird, sie zu warten, und unsere Produktionsserver sind immer noch auf 5.3, sodass ich nicht sicher bin, ob dies Probleme verursachen würde. Alle Kommentare, die Sie zu solchen Dingen hatten, oder ein paar Informationen zu den "schlechten Praktiken", die im Allgemeinen die Warnungen auslösen (um sicherzustellen, dass meine eigenen Module in Ordnung sind), wären eine große Hilfe :)
Clive
Ich habe die Antwort mit dem aktualisiert, was ich konnte. :) Ich behalte 5.3 installiert, damit ich problemlos zurückschalten und einige Leistungstests durchführen kann. Hoffentlich werde ich mich daran erinnern, hierher zurückzukehren, wenn ich dazu gekommen bin.
Letharion
2

Sie sollten PHP 5.4 meiden, da es dafür keinen stabilen APC gibt. Die Leistung für PHP 5.3 + APC wäre größer als 5.4.

vamur
quelle
Es gibt jetzt eine Beta-Version heraus. stackoverflow.com/questions/9611676/…
Letharion