การทำโปรไฟล์ PHP ด้วย Xdebug
เปิดใช้การทำโปรไฟล์ด้วย Xdebug และวิเคราะห์ผลลัพธ์ callgrind เพื่อค้นหาฟังก์ชันที่ทำงานช้า
การทำโปรไฟล์ PHP ด้วย Xdebug เป็นบทเรียน PHP Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน PHP Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส PHP Academy มีบทเรียนทั้งหมด 4 บทเรียน
Xdebug คืออะไร
Xdebug คือส่วนขยาย PHP ที่มีความสามารถด้านการแก้จุดบกพร่อง การวัดความครอบคลุมของโค้ด และการวิเคราะห์ประสิทธิภาพ เครื่องมือวิเคราะห์ประสิทธิภาพจะบันทึกว่าแต่ละการเรียกฟังก์ชันใช้เวลานานเท่าใดและถูกเรียกกี่ครั้ง
การติดตั้ง Xdebug
ติดตั้งผ่าน PECL หรือตัวจัดการแพ็กเกจ
# Via PECL:
$ pecl install xdebug
# Via apt:
$ apt install php-xdebug
# Verify:
$ php -v | grep Xdebugการเปิดใช้เครื่องมือวิเคราะห์ประสิทธิภาพ
กำหนดค่า Xdebug ใน php.ini เพื่อเปิดใช้การวิเคราะห์ประสิทธิภาพ
# php.ini
[xdebug]
zend_extension=xdebug.so
xdebug.mode=profile
xdebug.output_dir=/tmp/xdebug
xdebug.profiler_output_name=cachegrind.out.%tการวิเคราะห์ประสิทธิภาพตามตัวกระตุ้น
แทนที่จะวิเคราะห์ทุกคำขอ ให้ใช้ตัวกระตุ้นเพื่อเริ่มวิเคราะห์เมื่อต้องการ
# php.ini
xdebug.mode=profile
xdebug.start_with_request=trigger
# Trigger via query parameter or cookie:
curl "https://example.com/?XDEBUG_PROFILE=1"ผลลัพธ์ของ Callgrind
Xdebug จะเขียนไฟล์ cachegrind.out.* รูปแบบนี้อ่านได้ด้วยเครื่องมือแสดงผลการวิเคราะห์ประสิทธิภาพ
การวิเคราะห์ด้วย KCachegrind / QCachegrind
เปิดไฟล์ callgrind ใน KCachegrind (Linux) หรือ QCachegrind (macOS/Windows) เพื่อดูจำนวนการเรียกฟังก์ชัน เวลารวม เวลาเฉพาะฟังก์ชัน และแผนผังการเรียก
การวิเคราะห์ด้วย WebGrind
WebGrind คือเครื่องมือดู callgrind บนเบราว์เซอร์ ซึ่งตั้งค่าได้ง่ายกว่าเครื่องมือบนเดสก์ท็อป
$ docker run -p 8080:80 jokkedk/webgrind -v /tmp/xdebug:/tmpการอ่านผลลัพธ์จากเครื่องมือวิเคราะห์ประสิทธิภาพ
มองหาฟังก์ชันที่มี "ต้นทุนรวม" สูงที่สุด (เวลารวมที่รวมฟังก์ชันที่ถูกเรียกด้วย) เทียบกับ "ต้นทุนเฉพาะฟังก์ชัน" (เวลาในตัวฟังก์ชันเท่านั้น) ต้นทุนเฉพาะฟังก์ชันจะแสดงคอขวดที่แท้จริง
คอขวดที่พบบ่อย
สิ่งที่มักพบ ได้แก่ คำสั่งค้นหาฐานข้อมูลแบบ N+1 นิพจน์ทั่วไปที่ไม่มีประสิทธิภาพ การเรียกส่วนต่อประสานโปรแกรมประยุกต์ซ้ำซ้อน ความสัมพันธ์ Eloquent ที่ไม่ได้ปรับให้เหมาะสม และการแสดงผลมุมมองที่ใช้ทรัพยากรมาก
การวิเคราะห์ประสิทธิภาพเทียบกับการแก้จุดบกพร่อง
การวิเคราะห์ประสิทธิภาพใช้วัดประสิทธิภาพ (เวลาและจำนวนการเรียก) ส่วนการแก้จุดบกพร่อง (ซึ่งเป็นฟีเจอร์ของ Xdebug เช่นกัน) จะหยุดการทำงานที่จุดพักเพื่อให้ตรวจสอบโค้ดได้ ให้ใช้โหมด Xdebug แยกกัน
Blackfire เป็นทางเลือก
Blackfire.io คือเครื่องมือวิเคราะห์ประสิทธิภาพเชิงพาณิชย์ที่มีส่วนติดต่อผู้ใช้เรียบร้อย การผสานรวมกับระบบผสานรวมอย่างต่อเนื่อง และการตรวจยืนยันประสิทธิภาพ เหมาะกับสภาพแวดล้อมการทำงานเป็นทีมมากกว่าการวิเคราะห์ด้วย Xdebug โดยตรง
สรุป
เปิดโหมดวิเคราะห์ประสิทธิภาพของ Xdebug ใน php.ini เรียกใช้คำขอ แล้วเปิดไฟล์ callgrind ใน KCachegrind หรือ WebGrind มุ่งเน้นฟังก์ชันที่มีต้นทุนรวมและต้นทุนเฉพาะฟังก์ชันสูงที่สุดเพื่อค้นหาคอขวด
ตรวจสอบความเข้าใจอย่างรวดเร็ว
"ต้นทุนเฉพาะฟังก์ชัน" หมายถึงอะไรในรายงานการวิเคราะห์ประสิทธิภาพ
คำถามที่พบบ่อย
บทเรียน “การทำโปรไฟล์ PHP ด้วย Xdebug” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การทำโปรไฟล์ PHP ด้วย Xdebug” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส PHP Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส PHP Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การทำโปรไฟล์ PHP ด้วย Xdebug”
เปิดใช้การทำโปรไฟล์ด้วย Xdebug และวิเคราะห์ผลลัพธ์ callgrind เพื่อค้นหาฟังก์ชันที่ทำงานช้า คุณปฏิบัติ PHP Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน PHP Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน PHP Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “การทำโปรไฟล์ PHP ด้วย Xdebug” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน PHP Academy นี้ได้ไหม
ได้ บทเรียน PHP Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การทำโปรไฟล์ PHP ด้วย Xdebug
- OPcache: การแคชไบต์โค้ด
- การปรับปรุงประสิทธิภาพคำสืบค้นฐานข้อมูล
- การจัดการหน่วยความจำและเคล็ดลับด้านประสิทธิภาพ