อย่างที่คุณทราบ Xdebug ได้ลดการรองรับการทำโปรไฟล์หน่วยความจำตั้งแต่เวอร์ชัน 2. * โปรดค้นหาสตริง "ฟังก์ชันที่ถูกลบออก" ที่นี่: http://www.xdebug.org/updates.php
ฟังก์ชันที่ถูกลบออก
ลบการสนับสนุนสำหรับการทำโปรไฟล์หน่วยความจำเนื่องจากทำงานไม่ถูกต้อง
ฉันได้ลองใช้เครื่องมืออื่นและมันก็ใช้ได้ดีสำหรับฉัน
https://github.com/arnaud-lb/php-memory-profiler
นี่คือสิ่งที่ฉันได้ทำบนเซิร์ฟเวอร์ Ubuntu เพื่อเปิดใช้งาน:
sudo apt-get install libjudy-dev libjudydebian1
sudo pecl install memprof
echo "extension=memprof.so" > /etc/php5/mods-available/memprof.ini
sudo php5enmod memprof
service apache2 restart
จากนั้นในรหัสของฉัน:
<?php
memprof_enable();
memprof_dump_callgrind(fopen("/tmp/callgrind.out", "w"));
ในที่สุดเปิดcallgrind.out
ไฟล์ด้วยKCachegrind
ใช้ Google gperftools (แนะนำ!)
ก่อนอื่นให้ติดตั้งGoogle gperftoolsโดยดาวน์โหลดแพ็คเกจล่าสุดที่นี่: https://code.google.com/p/gperftools/
จากนั้นเช่นเคย:
sudo apt-get update
sudo apt-get install libunwind-dev -y
./configure
make
make install
ตอนนี้อยู่ในรหัสของคุณ:
memprof_enable();
memprof_dump_pprof(fopen("/tmp/profile.heap", "w"));
จากนั้นเปิดเทอร์มินัลของคุณและเปิด:
pprof --web /tmp/profile.heap
pprofจะสร้างหน้าต่างใหม่ในเซสชันเบราว์เซอร์ที่มีอยู่ของคุณโดยมีสิ่งที่แสดงด้านล่าง:
Xhprof + Xhgui (ดีที่สุดในความคิดของฉันสำหรับโปรไฟล์ทั้ง cpu และหน่วยความจำ)
ด้วยXhprofและXhguiคุณสามารถกำหนดโปรไฟล์การใช้งาน cpu ได้เช่นกันหรือเพียงแค่การใช้หน่วยความจำหากนั่นเป็นปัญหาของคุณในขณะนี้ เป็นโซลูชันที่สมบูรณ์แบบมากช่วยให้คุณสามารถควบคุมได้อย่างเต็มที่และบันทึกสามารถเขียนได้ทั้งบน mongo หรือในระบบไฟล์
สำหรับรายละเอียดเพิ่มเติมดูคำตอบของฉันที่นี่
แบล็คไฟร์
Blackfire เป็นผู้สร้างโปรไฟล์ PHP โดย SensioLabs ซึ่งเป็นพวก Symfony2 https://blackfire.io/
หากคุณใช้puphpetเพื่อตั้งค่าเครื่องเสมือนของคุณคุณยินดีที่จะรู้ว่ามันรองรับ ;-)