PHP 5.4 dan Drupal 7

31

Saya pernah mendengar bahwa PHP 5.4 lebih cepat dari PHP 5.3.

Apakah boleh untuk Drupal 7 berjalan di bawah 5.4, atau berbagai modul yang berkontribusi mungkin mulai merusak situs?

Lagi pula, Jika saya menggunakan cache opcode APC, mungkin 5.4, tidak akan menawarkan manfaat sama sekali?

Terima kasih

john
sumber

Jawaban:

28

Saya sudah mulai menjalankan Drupal 7 di PHP 5.4 sendiri dengan hanya masalah kecil dalam bentuk pemberitahuan dan peringatan.

Di atas 7.12, Anda perlu dua tambalan ini untuk memperbaiki masalah yang menyebabkan PHP mengeluh:

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

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

Salah satu dari tambalan ini telah diterapkan ke -dev, sehingga akan berada di 7.13, dan yang lainnya kemungkinan akan segera muncul. Dalam semua kasus yang bisa langsung saya pikirkan, praktik buruk yang menyebabkan 5,4 peringatan adalah penggunaan kunci array yang buruk.

Versi pertama ini terlihat seperti ini:

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

Beberapa kali, pemanggilan fungsi akan mengembalikan array atau objek, yang keduanya bukan merupakan kunci array yang valid. Di PHP 5.3, apa yang sebenarnya terjadi dan secara diam-diam tampak seperti ini:

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

Namun PHP 5.4, memperingatkan bahwa ini mungkin bukan yang Anda inginkan. Versi kedua persis sama, tetapi sebaliknya.

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

yang menghasilkan pesan kesalahan seperti

String ilegal mengimbangi 'a_valid_key'

kapan pun $may_be_a_stringsebenarnya string, bukan array, karena satu-satunya indeks string yang valid adalah bilangan bulat.

Karena masalahnya mudah dimengerti dan perbaikannya (kebanyakan) mudah diterapkan, saya menemukan bahwa dalam beberapa kasus, -dev versi sudah diperbarui, atau tambalan yang diposting dalam antrian, yang cenderung cepat masuk karena sifat sederhana mereka.

Setelah beberapa pengujian, saya merasa 5.4 tidak "berbahaya" untuk dijalankan dalam produksi, dan saya sudah mulai menjalankan situs kecil dan pribadi saya di situ. Saya akan mendorong orang lain untuk melakukan hal yang sama, sehingga kita dapat menghindari lambatnya pengambilan versi PHP baru.

Pada saat penulisan, versi terbaru APC, 3.1.9, tidak berfungsi dengan 5.4. Saya telah berhasil membangun dan menggunakannya dari git.

Menggunakan APC kemungkinan akan mengurangi manfaat kinerja dari peningkatan versi PHP, tetapi tidak menghapusnya.

Letharion
sumber
+1 Saya sudah bertanya-tanya tentang ini. Pernahkah Anda memperhatikan peningkatan kinerja di Drupal secara umum dari 5.3 ke 5.4? Jika Anda tidak keberatan memposting sedikit lebih banyak tentang pengalaman Anda sejauh ini, saya akan dengan senang hati memberikan hadiah atas jawabannya :)
Clive
Dalam beberapa kata memiliki APC, mungkin tidak sepadan dengan masalahnya, kecuali jika ada peningkatan kecepatan yang signifikan, yang tampaknya bukan itu masalahnya.
john
@Clive, saya belum melakukan pengukuran kinerja, meskipun saya berniat (untuk beberapa waktu sekarang). Adakah sesuatu yang secara khusus Anda pikirkan? :)
Letharion
Semacam, ya :) Saya sudah bermain-main dengan gagasan untuk meningkatkan ke 5,4 tetapi karena hampir semua yang saya lakukan tampaknya menjadi Drupal hari ini saya perlu memastikan itu tidak akan membuat hidup saya terlalu jauh lebih sulit. Saya baik-baik saja dengan menambal beberapa modul per situs tetapi saya khawatir itu akan segera menjadi sulit untuk dipelihara, dan server produksi kami masih di 5.3 jadi saya tidak yakin apakah itu akan menyebabkan masalah. Setiap komentar yang Anda miliki tentang hal semacam itu, atau sedikit info tentang apa "praktik buruk" yang umumnya menyebabkan peringatan (untuk memastikan modul saya sendiri ok) akan sangat membantu :)
Clive
Saya telah memperbarui jawabannya dengan apa yang saya bisa. :) Saya tetap menginstal 5.3 sehingga saya dapat dengan mudah beralih kembali dan melakukan beberapa pengujian kinerja. Mudah-mudahan saya akan ingat untuk kembali ke sini ketika saya mendapatkannya.
Letharion
2

Anda harus menghindari PHP 5.4 karena tidak ada APC stabil untuk itu. Performace untuk PHP 5.3 + APC akan lebih besar dari 5.4.

vamur
sumber
Sekarang ada rilis beta keluar. stackoverflow.com/questions/9611676/…
Letharion