PHP harus melacak jumlah waktu CPU yang digunakan skrip tertentu untuk menerapkan batas max_execution_time.
Apakah ada cara untuk mendapatkan akses ke dalam skrip ini? Saya ingin memasukkan beberapa logging dengan tes saya tentang berapa banyak CPU dibakar dalam PHP yang sebenarnya (waktu tidak bertambah ketika skrip sedang duduk dan menunggu database).
Saya menggunakan kotak Linux.
php
performance
twk
sumber
sumber
utime
/stime
/ waktu jam dinding? Dan dapatkah Anda memposting tautan ke contoh yang dapat direproduksi yang memperlihatkan perilaku ini? Pada OS / versi php / versi server web apa Anda? Bagaimanapun, Anda mungkin ingin memposting pertanyaan baru dan tautan ke sini.Jika yang Anda butuhkan adalah waktu dinding, bukan waktu eksekusi CPU, maka mudah untuk menghitung:
Perhatikan bahwa ini akan termasuk waktu ketika PHP duduk menunggu sumber daya eksternal seperti disk atau database, yang tidak digunakan untuk max_execution_time.
sumber
Versi lebih pendek dari jawaban talal7860
Seperti yang ditunjukkan, ini adalah 'waktu wallclock' bukan 'waktu cpu'
sumber
Cara termudah:
sumber
60
.. Tidak ada perbedaan.sumber
Saya membuat kelas ExecutionTime dari jawaban phihag yang dapat Anda gunakan di luar kotak:
pemakaian:
sumber
getrusage
hanya berfungsi sejak PHP 7.Gringod di developerfusion.com memberikan jawaban yang bagus:
Dari ( http://www.developerfusion.com/code/2058/determine-execution-time-in-php/ )
sumber
Ini akan menjadi lebih cantik jika Anda memformat output detik seperti:
akan dicetak
Ini jauh lebih baik daripada
sumber
Cara termurah dan paling kotor untuk melakukannya adalah dengan
microtime()
menelepon di tempat-tempat dalam kode yang ingin Anda tolak. Lakukan dengan benar sebelum dan sesudah permintaan basis data dan mudah untuk menghapus jangka waktu tersebut dari sisa waktu eksekusi skrip Anda.Sebuah petunjuk: waktu eksekusi PHP Anda jarang menjadi hal yang membuat waktu script Anda habis. Jika skrip berakhir, itu hampir selalu akan menjadi panggilan ke sumber daya eksternal.
Dokumentasi microtime PHP: http://us.php.net/microtime
sumber
Saya pikir Anda harus melihat xdebug. Opsi pembuatan profil akan memberi Anda awal untuk mengetahui banyak item terkait proses.
http://www.xdebug.org/
sumber
Untuk menampilkan menit dan detik, Anda dapat menggunakan:
sumber
Saya menulis fungsi yang memeriksa sisa waktu eksekusi.
Peringatan: Penghitungan waktu eksekusi berbeda pada platform Windows dan Linux.
Menggunakan:
sumber
Anda mungkin hanya ingin tahu waktu pelaksanaan bagian skrip Anda. Cara paling fleksibel untuk menentukan waktu bagian atau keseluruhan skrip adalah dengan membuat 3 fungsi sederhana (kode prosedural yang diberikan di sini tetapi Anda dapat mengubahnya menjadi kelas dengan meletakkan timer kelas {} di sekitarnya dan membuat beberapa tweak). Kode ini berfungsi, cukup salin dan tempel dan jalankan:
sumber
$_SERVER['REQUEST_TIME']
lihat itu juga. yaitu
sumber
Sebagai alternatif, Anda cukup meletakkan baris ini di blok kode Anda dan memeriksa log php, untuk fungsi yang sangat lambat, ini cukup berguna:
Untuk debugging serius, gunakan XDebug + Cachegrind, lihat https://blog.nexcess.net/2011/01/29/diagnosing-slow-php-execution-with-xdebug-and-kcachegrind/
sumber
Lebih lanjut memperluas jawaban Hamid, saya menulis kelas pembantu yang dapat dimulai dan dihentikan berulang kali (untuk membuat profil di dalam lingkaran).
sumber
return microtime (true) - $ _SERVER ["REQUEST_TIME_FLOAT"];
sumber