Rumah >pembangunan bahagian belakang >tutorial php >Pengoptimuman prestasi peringkat PHP dengan Blackfire
Blackfire: menunjuk dan menetapkan kesesakan prestasi di aplikasi rumah anda yang lebih baik
Wawasan Utama:
(artikel ini adalah sebahagian daripada siri untuk membina aplikasi blog multi-imej Galeri untuk penandaarasan dan pengoptimuman prestasi. Akses repositori di sini.)
Jawatan ini dibina atas perkenalan sebelumnya kepada Blackfire, menunjukkan aplikasi praktikalnya dalam mengenal pasti dan menyelesaikan masalah prestasi. Kami akan menggunakannya untuk menganalisis projek sampel kami, kawasan penargetan untuk peningkatan segera. Jika anda menggunakan Homestead bertambah baik (yang disyorkan), Blackfire harus ditubuhkan. Tiada pengetahuan Blackfire sebelum ini diperlukan.
Memahami Blackfire Metrics:
Sebelum kita mula, mari kita tentukan istilah utama yang digunakan dalam graf prestasi Blackfire:
Menyediakan Blackfire:
Homestead.yaml
<code class="language-yaml"># blackfire: # - id: foo # token: bar # client-id: foo # client-token: bar</code>Uncomment garis -garis ini dan gantikan nilai letak dengan butiran akaun anda.
Mengoptimumkan dengan Blackfire: Kajian Kes
Kami akan menanda aras laman utama - halaman kritikal untuk mana -mana laman web. Masa pemuatan perlahan di sini secara langsung memberi kesan kepada pengalaman pengguna dan kadar lantunan. Walaupun halaman lain (mis., Muat naik imej) boleh diuji, prestasi membaca secara amnya diprioritaskan melalui prestasi menulis.
Aplikasi awal kami memuatkan dan menyusun semua galeri mengikut umur. Untuk profil, buka laman utama, klik butang Sambungan Blackfire, dan pilih "Profil!".
Hasil Profil Awal:
Grafik mendedahkan bahawa PDOExecute
menggunakan 100% masa inklusif (bahagian merah jambu gelap), menunjukkan ia adalah hambatan utama. Walaupun kaedah lain mungkin menunjukkan bar merah jambu cahaya yang lebih besar (masa inklusif), ini mewakili masa kumulatif fungsi bergantung. Bahagian merah jambu gelap mewakili fungsi yang memerlukan perhatian segera.
Beralih ke mod RAM menunjukkan bahawa rendering ranting menggunakan majoriti (kira -kira 40MB) RAM. Ini diharapkan diberikan sejumlah besar data yang diberikan.
Analisis
mendedahkan bahawa dan PDOExecute
(penggunaan RAM tinggi) disebabkan oleh memuat semua galeri di laman utama. Penyelesaian: Melaksanakan penomboran. unserialize
Melaksanakan Pagination:
malar ke PER_PAGE
, menetapkannya kepada nilai seperti 12. HomeController
<code class="language-yaml"># blackfire: # - id: foo # token: bar # client-id: foo # client-token: bar</code>
<code class="language-php">$galleries = $this->em->getRepository(Gallery::class)->findBy([], ['createdAt' => 'DESC'], self::PER_PAGE);</code>
HomeController
<code class="language-html+php">{% block javascripts %} {{ parent() }} {% endblock %}</code>
Perbandingan prestasi:
Melancarkan profiler selepas melaksanakan penomboran menghasilkan penambahbaikan yang ketara:
Penggunaan memori dikurangkan sepuluh kali ganda, dan pemuatan hampir seketika. Kesesakan baru adalah DebugClass
, akibat dari persekitaran pembangunan. Beralih ke mod pengeluaran terus meningkatkan prestasi:
Kesimpulan:
Prestasi aplikasi meningkat secara dramatik, dengan masa beban halaman turun hingga 58ms. Pengoptimuman lanjut adalah minimum. Ujian prestasi biasa dengan Blackfire adalah penting, dan mengintegrasikannya ke dalam saluran paip CI/CD anda (tersedia dengan pelan premium Blackfire) sangat disyorkan.
Soalan Lazim (Soalan Lazim) mengenai Pengoptimuman Prestasi PHP:
Seksyen FAQ yang disediakan masih tidak berubah, kerana ia menawarkan maklumat berharga yang berkaitan dengan pengoptimuman prestasi PHP secara umum. Ia meliputi topik seperti alat pemantauan, isu biasa, teknik pengoptimuman, skalabiliti, dan amalan terbaik.Atas ialah kandungan terperinci Pengoptimuman prestasi peringkat PHP dengan Blackfire. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!