Apa cara yang baik untuk membuat profil penggunaan memori halaman PHP? Misalnya, untuk melihat berapa banyak memori yang digunakan data saya, dan / atau panggilan fungsi mana yang mengalokasikan memori paling banyak.
xdebug tampaknya tidak memberikan informasi memori dalam fitur profilnya.
xdebug tidak menyediakannya dalam fitur pelacakan. Ini cukup dekat dengan yang saya inginkan, kecuali jumlah data yang sangat banyak, karena ini menunjukkan delta memori untuk setiap panggilan fungsi. Jika dimungkinkan untuk menyembunyikan panggilan di bawah kedalaman tertentu, mungkin dengan beberapa alat GUI, itu akan menyelesaikan masalah saya.
Apa ada yang lain?
Jawaban:
Xdebug menerapkan kembali pelacakan memori di 2.6 (2018-01-29) yang dapat digunakan di Qcachegrind atau alat serupa. Hanya pastikan untuk memilih opsi memori :)
Dari dokumen:
Saya tidak terbiasa dengan format filenya, tapi Qcachegrind telah bekerja dengan baik untuk saya dalam melacak beberapa masalah memori.
sumber
Seperti yang mungkin Anda ketahui, Xdebug menghentikan dukungan profil memori sejak versi 2. *. Silakan cari string "fungsi yang dihapus" di sini: http://www.xdebug.org/updates.php
Jadi saya sudah mencoba alat lain dan itu bekerja dengan baik untuk saya.
https://github.com/arnaud-lb/php-memory-profiler
Inilah yang saya lakukan di server Ubuntu saya untuk mengaktifkannya:
Dan kemudian di kode saya:
Terakhir buka
callgrind.out
file dengan KCachegrindMenggunakan Google gperftools (disarankan!)
Pertama-tama instal Google gperftools dengan mengunduh paket terbaru di sini: https://code.google.com/p/gperftools/
Kemudian seperti biasa:
Sekarang dalam kode Anda:
Kemudian buka terminal Anda dan luncurkan:
pprof akan membuat jendela baru di sesi browser Anda yang sudah ada dengan sesuatu seperti yang ditunjukkan di bawah ini:
Xhprof + Xhgui (menurut saya yang terbaik untuk profil cpu dan memori)
Dengan Xhprof dan Xhgui Anda dapat membuat profil penggunaan cpu juga atau hanya penggunaan memori jika itu masalah Anda saat ini. Ini adalah solusi yang sangat lengkap, ini memberi Anda kendali penuh dan log dapat ditulis baik di mongo atau di sistem file.
Untuk lebih jelasnya lihat jawaban saya di sini .
Api hitam
Blackfire adalah profiler PHP oleh SensioLabs, orang-orang Symfony2 https://blackfire.io/
Jika Anda menggunakan boneka untuk mengatur mesin virtual Anda, Anda akan senang mengetahui bahwa itu didukung ;-)
sumber
memprof_enable
kode PHP saya dan saya mendapatkannyaPHP Fatal error: Uncaught Error: Call to undefined function memprof_enable()
. Saya melakukan gperftools membuat instal dari kode sumber mereka saat ini.php -i
di cli atau aphpinfo()
untuk melihat apakah Anda mendapatkan ekstensi yang dimuat dengan benar. Jika Anda tidak memilikinya di sana, mungkin ada baiknya untuk melihat*.ini
file Anda .sudo pecl install memprof-1.0.0
.Nah, ini mungkin bukan yang Anda cari, tetapi PHP memang memiliki beberapa fungsi bawaan yang akan menampilkan penggunaan memori. Jika Anda hanya ingin melihat berapa banyak memori yang digunakan oleh sebuah panggilan fungsi, Anda dapat menggunakan memory_get_peak_usage () sebelum dan sesudah panggilan, dan mengambil perbedaannya.
Anda menggunakan teknik yang sama di sekitar data Anda menggunakan memory_get_usage () yang sangat mirip .
Pendekatan yang cukup tidak canggih, tetapi ini adalah cara cepat untuk memeriksa sepotong kode. Saya setuju bahwa delta mem xdebug terkadang terlalu bertele-tele sehingga tidak berguna, jadi saya sering menggunakannya untuk mempersempit bagian kode, lalu membuang penggunaan memori tertentu untuk bagian kecil secara manual.
sumber
http://geek.michaelgrace.org/2012/04/tracing-php-memory-usage-using-xdebug-and-mamp-on-mac/
Saya menggunakan Mac, jadi jika Anda menggunakan Windows, Anda harus mengujinya, tetapi ini berfungsi untuk saya.
Saya memodifikasi file tracefile-analyzer.php saya dan menambahkan path ke biner PHP di bagian atas sehingga Anda dapat menyebutnya di terminal sebagai skrip unix normal.
Jangan lupa untuk mengubah file ini menjadi 755.
Anda dapat dengan mudah membuat skrip ruby watchr untuk secara otomatis memanggil skrip setiap kali membuat file profil memori (* .xt). Dengan begitu Anda dapat terus menguji dan melihat peningkatan Anda tanpa harus menjalankan perintah berulang kali.
sumber