ฉันเคยได้ยินว่า PHP 5.4 เร็วกว่า PHP 5.3
มันจะโอเคที่ Drupal 7 จะทำงานต่ำกว่า 5.4 หรือโมดูลที่สนับสนุนต่างๆอาจเริ่มทำลายไซต์หรือไม่
อย่างไรก็ตามถ้าฉันใช้ APC แคชรหัสอาจจะ 5.4 จะไม่ให้ประโยชน์ใด ๆ เลย?
ขอบคุณ
ฉันเคยได้ยินว่า PHP 5.4 เร็วกว่า PHP 5.3
มันจะโอเคที่ Drupal 7 จะทำงานต่ำกว่า 5.4 หรือโมดูลที่สนับสนุนต่างๆอาจเริ่มทำลายไซต์หรือไม่
อย่างไรก็ตามถ้าฉันใช้ APC แคชรหัสอาจจะ 5.4 จะไม่ให้ประโยชน์ใด ๆ เลย?
ขอบคุณ
คำตอบ:
ฉันเริ่มใช้ 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 เวอร์ชันใหม่ช้าลงในอดีต
ในขณะที่เขียน APCs เวอร์ชันล่าสุด 3.1.9 ไม่ทำงานกับ 5.4 ฉันได้สร้างและใช้จาก git เรียบร้อยแล้ว
การใช้ APC มีแนวโน้มที่จะลดประสิทธิภาพการทำงานของการอัพเกรดรุ่น PHP แต่ไม่สามารถลบได้
คุณควรหลีกเลี่ยง PHP 5.4 เนื่องจากไม่มี APC ที่เสถียรสำหรับมัน Performace สำหรับ PHP 5.3 + APC จะมากกว่า 5.4