ติดตั้งและกำหนดค่า XHProf (Ubuntu)


19

ปัญหา

ฉันพยายามใช้ XHProf แต่ฉันได้รับข้อผิดพลาด php ที่น่ากลัวทุกครั้งที่มันทำงาน

Warning: Invalid argument supplied for foreach() in xhprof_compute_inclusive_times() (line 1670 of /var/www/drupal/sites/all/modules/XHProf/xhprof.inc).
Warning: Invalid argument supplied for foreach() in xhprof_compute_flat_info() (line 1644 of /var/www/drupal/sites/all/modules/XHProf/xhprof.inc).
Warning: Invalid argument supplied for foreach() in theme_xhprof_overall_summary() (line 367 of /var/www/drupal/sites/all/modules/XHProf/xhprof.module).

แก้ไขปัญหาได้แล้วที่นี่เพราะไม่มีโฟลเดอร์ชั่วคราว

ตั้งค่าฝั่งเซิร์ฟเวอร์

ฉันใช้เซิร์ฟเวอร์ Ubuntu สด 13.04 กับ Drupal 7

ติดตั้ง xhprof ใช้pearตามคำแนะนำที่นี่ ฉันยังเพิ่มไดเรกทอรีชั่วคราวไปยัง php.ini ซึ่งฉันสร้างขึ้นด้วยตนเอง

extension=xhprof.so
xhprof.output_dir="/var/tmp/xhprof"

การตั้งค่า Drupal

ฉันติดตั้งทั้ง devel และติดตั้งโมดูล XHProf ด้วย

ในadmin/config/development/xhprofฉันเปิดใช้งานการทำโปรไฟล์การดูหน้าเว็บทั้งหมดและการร้องขอเพื่อดำเนินการ

ในการติดตามลิงค์ xhprof ฉันได้รับข้อผิดพลาดด้านบน

ป้อนคำอธิบายรูปภาพที่นี่

คำตอบ:


35

นายทหารดี นั่นเป็นเรื่องที่น่าหงุดหงิดอย่างไม่น่าเชื่อ นี่คือแนวทางในการทำงาน xhprof (หมายเหตุ: ฉันใหม่สำหรับ Linux ฉันไม่แน่ใจว่าสิทธิ์ที่ฉันใช้ปลอดภัยหรือว่ามีวิธีที่ดีกว่าในการทำฉันจะทำสิ่งนี้ในสภาพแวดล้อมการทดสอบเท่านั้น)

สำคัญ: มันจะไม่บอกอะไรคุณเกี่ยวกับวิธีการตีความมัน ฉันไม่รู้ว่าจะทำอย่างไรฉันแค่ดีใจที่ได้ผล

ทำให้ XHProf ทำงานได้

1. คุณใช้ระบบปฏิบัติการอะไร

Mac หรือ Linux

มันเป็นไปได้.

Windows?

อาจจะไม่. ในการใช้งาน xhprof บน windows คุณต้องมีคอมไพล์ dll มีการเชื่อมโยงไปยังหนึ่งในหัวข้อนี้แต่ฉันมักจะมีปัญหาความเข้ากันได้กับมันเมื่อฉันพยายามที่จะใช้มันใน XAMPP

ฉันคิดว่ามันถูกคอมไพล์ด้วย Apache เวอร์ชันอื่น

2. ทำให้มันทำงานบน Ubuntu

เป็นไปได้บน Mac นี่คือลิงก์ที่มีประโยชน์สองลิงก์:

http://www.lullabot.com/blog/article/installing-xhprof-mamp-and-php-52-mac-os-106-snow-leopard http://www.midwesternmac.com/blogs/jeff-geerling / รับ-xhprof ทำงานดี

แต่ฉันไม่ได้ทำมัน ฉันจัดการเพื่อให้มันทำงานบน Ubuntu Server 13.04 แม้ว่าฉันคิดว่า Ubuntu Server รุ่นใดจะใช้งานได้

ฉันตั้งค่าเซิร์ฟเวอร์ของฉันบน VirtualBox VirtualBox ให้บริการฟรี แต่อาจต้องใช้เวลาสักครู่ในการเรียนรู้วิธีตั้งค่า

3. การติดตั้ง XHProf

ฉันจะสมมติว่าเรามี Ubuntu Server ที่ทำงานได้อย่างสมบูรณ์

ก่อนอื่นเราต้องติดตั้งลูกแพร์ เราจะใช้สิ่งนี้เพื่อติดตั้ง XHProf

sudo apt-get install pear

เราติดตามสิ่งนี้ด้วย phpdev ซึ่งจำเป็นเช่นกัน

sudo apt-get install php5-dev

หากคำสั่งเหล่านี้ใช้งานไม่ได้และฉันเข้าใจผิดให้ไปที่:

sudo pecl install -f xhprof

อูบุนตูจะบอกคุณว่าคุณพลาดอะไรไปและแจ้งให้คุณทำการติดตั้ง เมื่อคุณได้ติดตั้ง xhprof ทั้งหมดแล้ว

คุณอาจได้รับข้อผิดพลาดในการติดตั้ง xhprof มันจะพยายามดาวน์โหลดเบต้าและล้มเหลว ในกรณีนั้นลอง:

sudo pecl install -f xhprof-beta

หวังว่าตอนนี้ xhprof จะถูกติดตั้งแล้ว

ตอนนี้เราจำเป็นต้องกำหนดค่า เปิด php.ini ของคุณซึ่งอยู่ที่/etc/php5/apache2/php.ini และเพิ่มสองบรรทัดต่อไปนี้ภายใต้ส่วนขยาย:

extension=xhprof.so
xhprof.output_dir="/var/tmp/xhprof"

บรรทัดที่สองตั้งค่าไดเรกทอรีผลลัพธ์ หากโฟลเดอร์นี้ไม่มีอยู่คุณจะต้องสร้างมันขึ้นมาเมื่อคุณทำการรีบูต apache โดยใช้

sudo service apache2 restart

4. ตรวจสอบว่า XHProf ทำงานอยู่หรือไม่

ตอนนี้เราต้องตรวจสอบว่ามันใช้งานได้หรือไม่

ทดสอบ 1:

เข้าสู่ php -m

ถ้าคุณเห็น xhprof ในรายการคุณก็พร้อมที่จะไป หากไม่ต้องกังวลลองใช้วิธีนี้แทนเพื่อตรวจสอบว่าใช้งานได้หรือไม่:

ไปที่ webroot ของคุณ/var/www/และสร้างไฟล์ php เพียง:

phpinfo();

บันทึกเป็น phpinfo.php เปิดสิ่งนี้ในเบราว์เซอร์ของคุณและคุณควรเห็นข้อมูล PHP ค้นหา xhprof และหากคุณเห็นสิ่งนี้แสดงว่ามันกำลังทำงานอยู่

ป้อนคำอธิบายรูปภาพที่นี่

5. ทำให้มันทำงานกับ Drupal

ฉันไม่สามารถทำงานกับโมดูล Drupal ได้ ดังนั้นฉันจะบอกคุณว่าจะให้มันทำงานกับโมดูล devel ได้อย่างไร

ครั้งแรกที่การตั้งค่าบางอย่างที่ฉันยืมมาจากที่นี่ ฉันไม่ได้ทำตามส่วนนี้จริงๆ แต่มันทำงานได้เหมือนม้าของขวัญและทุกอย่าง

สร้างไฟล์ปรับแต่งใหม่ด้วยคำสั่งต่อไปนี้:

sudo nano /etc/apache2/conf.d/xhprof.conf

และใส่รหัสต่อไปนี้

alias /xhprof_html "/usr/share/php/xhprof_html/"

จากนั้นเราอาจต้องสร้าง symlink ไปยังโฟลเดอร์ xhprof_html ของเรา ดังนั้นในกรณีที่ตั้งค่านี้:

ln -s / usr / share / php / xhprof_html / var / www / xhprof_html

สิ่งนี้จะสร้างโฟลเดอร์ใน webroot ของคุณซึ่งชี้ไปยังไฟล์ xhprof ที่มีอยู่ จากนั้นในเบราว์เซอร์ของคุณคุณสามารถเปิดhttp://mywebsitehere.com/xhprofเพื่อดูการทำงานทั้งหมดที่คุณทำ

จากนั้นรีสตาร์ท apache ตอนนี้เป็นเวลาสำหรับการตั้งค่า devel เล็กน้อย ไปที่การตั้งค่า devel เปิดใช้งาน xhprof และตั้งค่า:

xhprof directory = /usr/share/php

XHProf URL = /xhprof_html

ตอนนี้ที่ด้านล่างของแต่ละหน้าคุณควรเห็นลิงค์เล็กน้อยไปยัง xhprof

ป้อนคำอธิบายรูปภาพที่นี่

และการคลิกควรนำคุณไปสู่หน้าที่มีลักษณะเช่นนี้ คุณทำเสร็จแล้ว ขอแสดงความยินดี!

ป้อนคำอธิบายรูปภาพที่นี่

หากไม่ได้ผลและคุณได้รับข้อผิดพลาดในการทำงานอาจเป็นเพราะ Drupal ไม่ได้รับอนุญาตให้เขียนไปยังโฟลเดอร์ tmp ที่เราตั้งไว้ก่อนหน้านี้ดังนั้นให้ป้อน:

sudo chown -R www-data /var/tmp/xhprof

และหวังว่าจะได้ผล เราเสร็จแล้ว hoorah!

เว้นแต่ว่าคุณต้องการฟังก์ชั่นการสร้างกราฟ โชคดีที่ง่ายเหมือน:

sudo apt-get install graphviz
sudo service apache2 restart

และตอนนี้คุณควรมีฟังก์ชั่นกราฟ หวังว่าจะช่วยได้!


ว้าวคำตอบที่น่าประทับใจ สำหรับสิ่งที่คุ้มค่าการอนุญาตที่คุณใช้ดูมีเหตุผล
Letharion

ใช่มีความเจ็บปวดอย่างมากที่จะได้ผล หวังว่ามันจะช่วยให้คนอื่น (และฉันในสองเดือนเมื่อฉันลืม)
Dominic Woodman

คำตอบที่ดีทำงานอย่างสมบูรณ์ Thanx เพื่อบรรเทาอาการปวด :-)
JurgenR

ฉันไม่มี/etc/apache2/conf.dไดเรกทอรี ฉันทำ sudo nano /etc/apache2/conf-enabled/xhprof.confและa2enconf xhprofแทน
milkovsky

ขอบคุณสำหรับการวิ่งผ่าน บน Ubuntu 14.04 ฉันติดตั้งจากที่เก็บของ Ubuntu มากกว่าลูกแพร์และพบว่าฉันต้องดำเนินการphp5enmod xhprofเพื่อสร้าง symlink ลำดับความสำคัญจากไดเรกทอรี conf.d ไปยังไฟล์ xhprof.ini ของไดเรกทอรี mods อีกวิธีในการตรวจสอบว่ามีการเปิดใช้งาน xhprof หรือไม่php5-fpm -i | grep xhprofโดยแทนที่ php5-fpm ด้วย SAPI ใดก็ตามที่คุณกำลังตรวจสอบ
mesch
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.