ตั้งค่า Zend Optimizer กับ Zend Debugger ให้ทำงานพร้อมกันได้

หลายคนที่ทำงานด้าน Web Dev ที่พัฒนาบน PHP มักจะต้องใช้ Zend Debugger ไม่มากก็น้อย โดยเอาไว้ใช้ในการ Debug แบบ Realtime ในระหว่างที่ PHP กำลังทำงานอยู่ เพื่อเก็บรายละเอียดด้าน Performance ต่าง ๆ ที่ เช่น

  • php ไฟล์ที่เราเขียนอยู่มีการ access พวก include หรือ require ไฟล์ต่าง ๆ กี่ไฟล์
  • มีการเรียกใช้ object, class, method หรือ function อะไรบ้าง ไล่เรียงตาม flow ต่าง ๆ
  • ตรวจสอบว่า method หรือ function ในแต่ละตัวนั้นทำงานนานแค่ไหน เพื่อเช็ด และตรวจสอบด้านความเร็วในการทำงาน
  • เช็คพวก warning, strict, notice message ระหว่างการทำงานโดยไม่ต้องเขียน error_reporting ให้เขียนไฟล์ให้เสียเวลาทำงาน

ส่วน Zend Optimizer นี่ผมใส่ลงไปเพื่อเพิ่มความเร็วในการทำงานของ PHP เวลาทำงาน แต่มัน debug ไม่ได้ครับ แต่ทำให้ script ของเราทำงานเร็วขึ้น 10 – 30% ตามที่ Zend ได้บอกไว้ในเว็บ (แต่มันก็เร็วขึ้นจริง ๆ แหละ)

โดยทั้งสองตัวนี้มีวิธีการลงที่คล้าย ๆ กัน (เรื่องวิธีการลงหาได้ทั่วไปตาม internet ทั้ง Debugger กับ Optimizer ไม่ขออธิบายแล้วกัน) ถ้าไปสืบหาตามปกติ การตั้งค่าจะทับซ้อนกันครับ ทำให้ต้องเลือกอย่างใดอย่างหนึ่งตอนใช้งาน แต่ว่าก็มีหนทางทำให้มันทำงานได้เหมือนกันครับ

โดยเราตั้งค่าพื้นฐานโดยใช้ Optimizer ยืนพื้นไปก่อนเลย โดยชื่อไฟล์ต่าง ๆ ที่บอกมาเป็นตัว library ที่ทำงานบน Windows ครับ

[Zend]
zend_extension_ts="c:/path_to_zend_optimizer/lib/ZendExtensionManager.dll"
zend_extension_manager.optimizer_ts="c:/path_to_zend_optimizer/lib/Optimizer"

โดยใน c:/path_to_zend_optimizer/lib/Optimizer นั้น จะมี directory เรียงรายตาม version ต่าง ๆ ของ php ครับ โดยผมใช้ PHP 5.2.6 ครับ ก็จะใช้ directory php-5.2.x ครับ ในนั้นก็จะมีไฟล์ชื่อ ZendOptimizer.dll (ไฟล์ที่อ้างอิงคือ Windows นะครับ)

ให้เอาไฟล์ ZendDebugger.dll ที่โหลดมาจากเว็บ zend เอามาใส่ โดยเอาไฟล์จาก directory ใน .zip ไฟล์ใส่ให้ตรงกับ version ใน directory ปลายทางด้วย

แล้วตั้งค่า ต่อไปด้วยคำสั่ง

[Zend]
zend_extension_ts="c:/path_to_zend_optimizer/lib/ZendExtensionManager.dll"
zend_extension_manager.optimizer_ts="c:/path_to_zend_optimizer/lib/Optimizer"

[Debugger]
zend_extension_manager.debug_server_ts="c:/path_to_zend_optimizer/lib/Optimizer"
zend_debugger.allow_hosts=127.0.0.1/32
zend_debugger.allow_tunnel=127.0.0.1/32
zend_debugger.expose_remotely=allowed_hosts
zend_debugger.connector_port=10001

แล้ว restart ตัว Web Server ก็จะสามารถทำให้ Zend Optimizer กับ Zend Debugger ทำงานได้พร้อม ๆ กันแล้วหล่ะครับ

โดย phpinfo แล้วจะได้ตามวงสี่เหลี่ยมสีแดงนี้ครับ

2008-05-19_211436

อ้างอิงจาก How to allow Zend Optimizer and Zend Debugger coexist