Instal dan Konfigurasi XHProf (Ubuntu)

19

Masalah

Saya mencoba menggunakan XHProf tapi saya mendapatkan kesalahan php yang mengerikan setiap kali dijalankan.

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).

Masalahnya terpecahkan di sini karena folder sementara tidak ada, tetapi milikku tidak.

Set-Up Server Side

Saya menjalankan Ubuntu Server 13.04 baru dengan Drupal 7.

Instal xhprof dengan pearmengikuti instruksi di sini . Saya juga menambahkan direktori sementara ke php.ini, yang saya buat secara manual.

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

Pengaturan Drupal

Saya telah menginstal devel dan saya juga menginstal modul XHProf.

Pada admin/config/development/xhprof, saya mengaktifkan profil semua tampilan halaman dan permintaan drush.

Saat mengikuti tautan xhprof saya mendapatkan kesalahan di atas.

masukkan deskripsi gambar di sini

Dominic Woodman
sumber

Jawaban:

35

Ya Tuhan, Batman. Itu sangat membuat frustrasi. Berikut panduan untuk menjalankan xhprof. (Catatan: Saya sangat baru di Linux. Saya tidak yakin apakah izin yang saya gunakan aman, atau apakah ada cara yang lebih baik untuk melakukannya. Saya hanya akan melakukan ini di lingkungan pengujian.)

PENTING: Tidak akan memberi tahu Anda apa pun tentang cara menafsirkannya. Saya tidak tahu caranya, saya senang itu berhasil.

Membuat XHProf Bekerja

1. Sistem operasi apa yang Anda jalankan?

Mac atau Linux?

Itu mungkin.

Windows?

Mungkin tidak. Untuk menjalankan xhprof di windows Anda harus memiliki dll yang dikompilasi. Ada tautan ke salah satu di utas ini , tetapi saya selalu memiliki masalah kompatibilitas dengannya ketika saya mencoba menggunakannya di XAMPP.

Saya pikir itu dikompilasi dengan versi Apache yang berbeda.

2. Cara membuatnya bekerja di Ubuntu

Itu mungkin di Mac. Berikut adalah dua tautan bermanfaat:

http://www.lullabot.com/blog/article/installing-xhprof-mamp-and-php-52-mac-os-106-snow-leopard http://www.midwesternmac.com/blogs/jeff-geerling / mendapatkan-xhprof-berfungsi dengan baik

Tapi saya belum melakukannya. Saya berhasil membuatnya bekerja di Ubuntu Server 13.04, meskipun saya pikir versi terbaru dari Ubuntu Server akan berfungsi.

Saya mengatur server saya di VirtualBox. VirtualBox gratis tetapi mungkin perlu sedikit waktu untuk mempelajari cara mengaturnya.

3. Menginstal XHProf

Saya akan menganggap kita memiliki Ubuntu Server yang berfungsi penuh.

Pertama kita perlu menginstal pir. Kami akan menggunakan ini untuk menginstal XHProf.

sudo apt-get install pear

Kami menindaklanjutinya dengan phpdev yang juga diperlukan.

sudo apt-get install php5-dev

Jika perintah ini tidak berfungsi dan saya salah, langsung saja:

sudo pecl install -f xhprof

Ubuntu akan memberi tahu Anda apa yang Anda lewatkan dan memberi Anda prompt untuk menginstalnya. Setelah Anda mendapatkan semua dependensi, instal xhprof.

Anda mungkin mendapatkan kesalahan saat menginstal xhprof, itu akan mencoba mengunduh versi beta dan gagal. Dalam hal ini coba:

sudo pecl install -f xhprof-beta

Semoga xhprof sekarang diinstal.

Sekarang kita perlu mengkonfigurasinya. Buka php.ini Anda yang ada di /etc/php5/apache2/php.ini dan tambahkan dua baris berikut di bawah bagian ekstensi:

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

Baris kedua mengatur direktori keluaran. Jika folder ini tidak ada, Anda harus membuatnya. Ketika Anda telah melakukannya, gunakan apache reboot

sudo service apache2 restart

4. Memeriksa apakah XHProf sedang berjalan

Sekarang kita perlu memeriksa apakah itu berhasil.

Tes 1:

Memasukkan php -m

Jika Anda melihat xhprof dalam daftar, Anda dapat melakukannya. Jika tidak, jangan khawatir, coba ini sebagai gantinya untuk memeriksa apakah itu berfungsi:

Buka webroot Anda /var/www/dan buat file php hanya dengan:

phpinfo();

Simpan sebagai phpinfo.php. Buka ini di browser Anda dan Anda akan melihat informasi PHP. Cari xhprof dan jika Anda melihat ini maka berjalan.

masukkan deskripsi gambar di sini

5. Cara membuatnya bekerja dengan Drupal

Saya tidak bisa membuatnya bekerja dengan modul Drupal. Jadi alih-alih saya akan memberi tahu Anda cara membuatnya bekerja dengan modul devel.

Pertama beberapa konfigurasi yang saya pinjam dari sini . Saya tidak benar-benar mengikuti bagian ini, tetapi itu berfungsi sebagai kuda hadiah dan sebagainya.

Buat file konfigurasi baru dengan perintah berikut:

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

dan masukkan kode berikut.

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

Maka kita mungkin perlu membuat symlink ke folder xhprof_html kita. Jadi kalau-kalau set ini:

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

Ini akan membuat folder di webroot Anda yang menunjuk ke file xhprof yang ada. Kemudian di browser Anda, Anda dapat membuka http://mywebsitehere.com/xhprof untuk melihat semua proses yang Anda lakukan.

Kemudian restart apache. Sekarang saatnya untuk konfigurasi devel kecil. Buka pengaturan devel, aktifkan xhprof dan atur:

xhprof directory = /usr/share/php

XHProf URL = /xhprof_html

Sekarang di bagian bawah setiap halaman Anda akan melihat tautan kecil ke xhprof.

masukkan deskripsi gambar di sini

Dan mengklik itu akan membawa Anda ke halaman yang terlihat seperti ini. Kamu sudah selesai. Selamat!

masukkan deskripsi gambar di sini

Jika itu tidak berhasil dan Anda menjalankan kesalahan, itu mungkin karena Drupal tidak memiliki izin untuk menulis ke folder tmp yang kita atur sebelumnya, jadi masukkan:

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

Dan semoga itu berhasil. Dilakukan. Hoorah!

Kecuali Anda ingin fungsi grafik. Untungnya itu semudah:

sudo apt-get install graphviz
sudo service apache2 restart

Dan sekarang Anda harus memiliki fungsi grafik. Semoga bermanfaat!

Dominic Woodman
sumber
Wow, jawaban yang mengesankan. Untuk apa nilainya, izin yang Anda gunakan tampak waras.
Letharion
Ya ada rasa sakit yang serius untuk membuatnya bekerja. Semoga itu akan membantu orang lain (dan saya dalam dua bulan ketika saya sudah lupa).
Dominic Woodman
Jawaban yang bagus, bekerja dengan baik, terima kasih untuk menghilangkan rasa sakit :-)
JurgenR
Saya tidak punya /etc/apache2/conf.ddirektori. Saya membuat sudo nano /etc/apache2/conf-enabled/xhprof.confdan a2enconf xhprofsebagai gantinya
milkovsky
Terima kasih untuk run-through. Pada Ubuntu 14.04 saya menginstal dari repositori Ubuntu daripada PEAR, dan menemukan saya perlu menjalankan php5enmod xhprofuntuk membuat symlink prioritas dari direktori conf.d ke file direktori xhprof.ini direktori mod-tersedia. Cara lain untuk memeriksa apakah xhprof diaktifkan adalah menjalankan php5-fpm -i | grep xhprof, mengganti php5-fpm dengan SAPI apa pun yang Anda periksa.
mesch