PHP 5.4 e Drupal 7


31

Ho sentito che PHP 5.4 è più veloce di PHP 5.3.

Andrebbe bene che Drupal 7 funzionasse con 5.4 o che i vari moduli forniti potessero iniziare a rompere il sito?

Ad ogni modo, se uso la cache opcode APC, forse 5.4, non offrirebbe alcun vantaggio?

Grazie

Risposte:


28

Ho iniziato a eseguire Drupal 7 su PHP 5.4 da solo con problemi minori sotto forma di avvisi e avvisi.

Oltre a 7.12, avrai bisogno di queste due patch per risolvere i problemi che fanno lamentare PHP:

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

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

Una di queste patch è già stata applicata a -dev, quindi sarà in 7.13 e l'altra probabilmente entrerà presto. In tutti i casi a cui riesco immediatamente a pensare, la cattiva pratica che ha provocato 5,4 avvisi è stata un cattivo uso delle chiavi dell'array.

La prima versione di questo assomiglia a questo:

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

Alcune volte, la chiamata di funzione restituisce un array o un oggetto, nessuno dei quali è una chiave di array valida. In PHP 5.3, ciò che realmente accade e silenziosamente appare così:

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

PHP 5.4, tuttavia, avverte che potrebbe non essere quello che desideri. La seconda versione è esattamente la stessa, ma viceversa.

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

che produce un messaggio di errore simile

Offset stringa illegale 'a_valid_key'

ogni volta che in $may_be_a_stringrealtà è una stringa, non un array, poiché gli unici indici di stringa validi sono numeri interi.

Dato che i problemi sono facili da capire e la correzione è (per lo più) facile da applicare, ho scoperto che in diversi casi, le versioni -dev sono già aggiornate o le patch pubblicate nella coda, che probabilmente entreranno rapidamente a causa di la loro semplice natura.

Dopo alcuni test, non mi sembra che il 5.4 sia "pericoloso" da eseguire in produzione e ho già iniziato a gestire i miei siti piccoli e personali su di esso. Vorrei incoraggiare gli altri a fare lo stesso, in modo da evitare l'adozione storicamente lenta delle nuove versioni di PHP.

Al momento in cui scrivo, l'ultima versione di APC, 3.1.9, non funziona con 5.4. Tuttavia, l'ho costruito e usato con successo da Git.

L'uso di APC probabilmente ridurrà il vantaggio in termini di prestazioni dell'aggiornamento della versione di PHP, ma non la rimuoverà.


+1 Mi stavo chiedendo questo. Hai notato miglioramenti delle prestazioni in Drupal in genere passando da 5.3 a 5.4? Se non ti dispiace pubblicare un po 'di più sulle tue esperienze finora, sarei felice di assegnare una taglia sulla risposta :)
Clive

In poche parole avere APC, forse non vale la pena, tranne se ci potrebbe essere un aumento significativo della velocità, il che sembra non essere il caso.
Giovanni,

@Clive, devo ancora effettuare misurazioni delle prestazioni, anche se ho intenzione di farlo (già da un po 'di tempo). C'è qualcosa in particolare che ti stai chiedendo? :)
Letharion,

In un certo senso, sì :) Ho avuto l'idea di passare alla versione 5.4, ma dato che praticamente tutto ciò che faccio sembra essere Drupal in questi giorni, devo essere sicuro che non renderà la mia vita troppo difficile. Sto bene con la patch di alcuni moduli per sito, ma sono preoccupato che presto sarà difficile da mantenere, e i nostri server di produzione sono ancora su 5.3, quindi non sono sicuro se ciò causerebbe problemi. Eventuali commenti che hai avuto su quel genere di cose, o un po 'di informazioni su quali siano le "cattive pratiche" che generalmente causano gli avvisi (per assicurarsi che i miei moduli siano ok) sarebbe di grande aiuto :)
Clive

Ho aggiornato la risposta con quello che potevo. :) Continuo a installare 5.3 in modo da poter facilmente tornare indietro e fare alcuni test delle prestazioni. Spero di ricordarmi di tornare qui quando ci sarò arrivato.
Letharion,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.