ในการพัฒนาระบบขนาดใหญ่ แคชมีความสำคัญอย่างไม่ต้องสงสัย ในโลกของ PHP แม้ว่าจะมีโซลูชันแคชให้เลือกไม่มากเท่าใน Java แต่ก็ยังมีโซลูชันที่สมบูรณ์อยู่บ้าง จาก "การเขียนโปรแกรม PHP ขั้นสูง" ฉันได้เรียนรู้สิ่งต่อไปนี้:
1. การเพิ่มประสิทธิภาพระดับภาษา: PHP มี API ระดับเอ็นจิ้นจำนวนมาก ด้วย API เหล่านี้ พฤติกรรมการทำงานของเอ็นจิ้นสามารถเปลี่ยนแปลงได้เพื่อให้บรรลุวัตถุประสงค์ของการเพิ่มประสิทธิภาพ สิ่งที่คุ้มค่าที่สุดที่ต้องทำคือการแคชผลการคอมไพล์ ดังที่เราทุกคนทราบกันดีว่า ทุกครั้งที่ดำเนินการ PHP นั้นจะต้องผ่านกระบวนการของซอร์สโค้ด -> การคอมไพล์ -> โค้ดระดับกลาง -> การดำเนินการของเอ็นจิ้น สำหรับแอปพลิเคชันขนาดใหญ่บางตัว จะใช้เวลาค่อนข้างมากในการคอมไพล์ที่ไร้ประโยชน์ (ไม่ใช่ เฉพาะ PHP ที่เข้าถึงเพจ) ไฟล์ต่างๆ จะต้องผ่านขั้นตอนการคอมไพล์ เมื่อจำเป็นต้องใช้ () และ include() ในสคริปต์ บางไฟล์ที่รวมไว้จำเป็นต้องได้รับการคอมไพล์) ด้วยการแคชผลการคอมไพล์ ประสิทธิภาพของระบบสามารถปรับปรุงได้อย่างมาก (สัดส่วนกับความซับซ้อนและขนาดของระบบ)
เครื่องมือหลักสามอย่างในโลก PHP ที่สามารถใช้คอมไพล์แคชได้คือ:
Zend Accelerator—แคชคอมไพเลอร์เชิงพาณิชย์แบบโอเพนซอร์ซแบบคิดต้นทุนที่ผลิตโดย Zend Industries
ionCube Accelerator—แคชคอมไพเลอร์เชิงพาณิชย์แบบโอเพนซอร์สแต่ฟรีที่เขียนโดย Nick Lindridge และจัดจำหน่ายโดยบริษัท ionCube ของเขา
APC—แคชคอมไพเลอร์โอเพ่นซอร์สฟรีที่เขียนโดย Daniel Cowgill และ George Schlossnagle
วิธีการติดตั้ง APC APC จะรวมอยู่ใน PECL การติดตั้งเฉพาะจะเป็นดังนี้ 190-823 190-802:
หลังจากรันคำสั่ง
#pear install apc
ใน php.ini เพิ่ม:
extension = /path/to/apc.so
ลงในไฟล์ด้วยวิธีนี้ การติดตั้งจะเสร็จสมบูรณ์ เมื่อรัน php ครั้งถัดไป APC จะถูกเปิดใช้งานโดยอัตโนมัติ และผลลัพธ์การคอมไพล์จะถูกแคชไว้ในไฟล์ที่แชร์ หน่วยความจำ ครั้งต่อไปที่ดำเนินการ รับผลการแก้ไขโดยตรงจากหน่วยความจำและดำเนินการโดยไม่ต้องรวบรวมอีกครั้ง
คำถาม: APC สามารถคอมไพล์ PHP ที่เปลี่ยนแปลงไปตั้งแต่การคอมไพล์ครั้งล่าสุดโดยอัตโนมัติได้หรือไม่
2. การเพิ่มประสิทธิภาพโค้ด PHP: ใช้เครื่องมือบางอย่างเพื่อสร้างโค้ดระดับกลางคุณภาพสูงหลังจากการคอมไพล์ รายละเอียดมีดังนี้:
Zend Optimizer เป็นตัวเพิ่มประสิทธิภาพแบบปิดแต่มีให้ใช้งานได้ฟรี
ตัวเร่งความเร็ว ionCube มีเครื่องมือเพิ่มประสิทธิภาพในตัว
เครื่องมือเพิ่มประสิทธิภาพการพิสูจน์แนวคิดใน PEAR
ฟังก์ชันหลักของเครื่องมือเพิ่มประสิทธิภาพ:
1. ลบโค้ดที่ไม่มีประโยชน์ เช่น โค้ดที่ไม่ทำงานซึ่งจะไม่ถูกเรียกใช้งาน
2. การคำนวณค่าคงที่ เช่น การเปลี่ยน $seconds_in_day = 24*60*60 เป็น $seconds_in_day = 86400 โดยตรง
3. ฟังก์ชันการเพิ่มประสิทธิภาพโค้ดอื่นๆ เช่น คำสั่งนี้:
$count++
จะถูกปรับให้เหมาะสมเป็น ++$count การดำเนินการเร็วขึ้น แน่นอนว่าหากคำสั่งคือ $i = $count++;