PHP 5.4 và Drupal 7


31

Tôi đã nghe nói rằng PHP 5.4 nhanh hơn PHP 5.3.

Liệu Drupal 7 có thể chạy dưới 5.4 hay không, hoặc các mô-đun đóng góp khác nhau có thể bắt đầu phá vỡ trang web?

Dù sao, nếu tôi sử dụng bộ đệm opcode APC, có thể là 5.4, sẽ không mang lại lợi ích gì cả?

Cảm ơn

Câu trả lời:


28

Bản thân tôi đã bắt đầu chạy Drupal 7 trên PHP 5.4 chỉ với một số vấn đề nhỏ dưới dạng thông báo và cảnh báo.

Trên 7.12, bạn sẽ cần hai bản vá này để khắc phục các sự cố khiến PHP phàn nàn:

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

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

Một trong những bản vá này đã được áp dụng cho -dev, vì vậy sẽ có trong 7.13, và bản vá khác có thể sẽ sớm ra mắt. Trong tất cả các trường hợp mà tôi có thể nghĩ ngay lập tức, thực tiễn xấu gây ra 5,4 cảnh báo là sử dụng sai các phím mảng.

Phiên bản đầu tiên trông như thế này:

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

Đôi khi, lệnh gọi hàm sẽ trả về một mảng hoặc một đối tượng, cả hai đều không phải là khóa mảng hợp lệ. Trong PHP 5.3, những gì thực sự và âm thầm xảy ra, trông như thế này:

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

Tuy nhiên, PHP 5.4 cảnh báo rằng đây có thể không phải là điều bạn muốn. Phiên bản thứ hai hoàn toàn giống nhau, nhưng ngược lại.

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

dẫn đến một thông báo lỗi như

Chuỗi bù bất hợp pháp 'a_valid_key'

Bất cứ khi nào $may_be_a_stringthực sự là một chuỗi, không phải là một mảng, vì chỉ mục chuỗi hợp lệ duy nhất là số nguyên.

Vì các vấn đề rất dễ hiểu và cách khắc phục (hầu hết) dễ áp ​​dụng, tôi đã thấy rằng trong một số trường hợp, các phiên bản -dev đã được cập nhật hoặc các bản vá được đăng trong hàng đợi, có khả năng nhanh chóng xuất hiện do bản chất đơn giản của họ.

Sau một số thử nghiệm, tôi không cảm thấy như 5.4 là "nguy hiểm" khi chạy trong sản xuất và tôi đã bắt đầu chạy các trang web nhỏ và cá nhân của mình trên đó. Tôi sẽ khuyến khích người khác làm điều tương tự, vì vậy chúng ta có thể tránh sự hấp thụ chậm trong lịch sử của các phiên bản PHP mới.

Tại thời điểm viết, APC phiên bản mới nhất, 3.1.9, không hoạt động với 5.4. Tôi đã xây dựng thành công và sử dụng nó từ git mặc dù.

Sử dụng APC có thể sẽ làm giảm lợi ích hiệu năng của việc nâng cấp phiên bản PHP, nhưng không loại bỏ nó.


+1 Tôi đã tự hỏi về điều này. Bạn có nhận thấy bất kỳ sự tăng hiệu suất nào trong Drupal thường đi từ 5,3 đến 5,4 không? Nếu bạn không muốn đăng thêm một chút về trải nghiệm của mình cho đến nay, tôi rất vui khi được thưởng tiền thưởng cho câu trả lời :)
Clive

Trong vài từ có APC, có thể không có giá trị rắc rối, ngoại trừ nếu có thể có sự gia tăng đáng kể về tốc độ, có vẻ như không phải vậy.
john

@Clive, tôi vẫn chưa thực hiện các phép đo hiệu suất, mặc dù tôi có ý định (từ khá lâu rồi). Có điều gì đặc biệt bạn đang tự hỏi về? :)
Letharion

Đại loại, vâng :) Tôi đã từng chơi đùa với ý tưởng nâng cấp lên 5,4 nhưng gần như mọi thứ tôi làm dường như là Drupal ngày nay tôi cần chắc chắn rằng nó sẽ không khiến cuộc sống của tôi trở nên khó khăn hơn nhiều. Tôi ổn với việc vá một vài mô-đun cho mỗi trang web nhưng tôi lo lắng nó sẽ khó bảo trì và các máy chủ sản xuất của chúng tôi vẫn hoạt động vào ngày 5.3 vì vậy tôi không chắc liệu điều đó có gây ra sự cố nào không. Bất kỳ nhận xét nào bạn có về loại điều đó, hoặc một chút thông tin về "thực tiễn xấu" nói chung là gì gây ra cảnh báo (để đảm bảo các mô-đun của riêng tôi đều ổn) sẽ giúp ích rất nhiều :)
Clive

Tôi đã cập nhật câu trả lời với những gì tôi có thể. :) Tôi giữ 5.3 cài đặt để tôi có thể dễ dàng chuyển trở lại và thực hiện một số thử nghiệm hiệu suất. Hy vọng tôi sẽ nhớ trở lại đây khi tôi đã nhận được nó.
Letharion

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.