Dalam ansuran sebelumnya, kami menyediakan projek Symfony asas, mencipta lekapan awal, dan mendapat aplikasi berjalan. Artikel ini memberi tumpuan kepada populasi pangkalan data dengan dataset yang realistik untuk penandaarasan prestasi. Kami juga akan meliputi menyediakan suite ujian phpunit.
Objektif Utama:
Menjana dataset yang lebih besar:
Selepas perkembangan awal, mewujudkan dataset yang lebih besar adalah penting untuk ujian prestasi yang realistik. Walaupun lekapan kecil sesuai untuk pembangunan, ujian prestasi memerlukan jumlah data yang lebih besar. Hanya meningkatkan tetap dalam kelas perlawanan kami (seperti yang ditunjukkan di bawah) tidak cekap dan boleh menyebabkan kesilapan keletihan memori: COUNT
// src/DataFixtures/ORM/LoadUsersData.php const COUNT = 500; // src/DataFixtures/ORM/LoadGalleriesData.php const COUNT = 1000;
PHP Fatal error: Allowed memory size of N bytes exhausted
Untuk menangani isu -isu ini, kami akan melaksanakan pemprosesan batch dalam doktrin. Kami akan mentakrifkan saiz batch (mis., 100 galeri), siram dan membersihkan entitiManager selepas setiap kumpulan, dan menggunakan koleksi sampah (
). Ini menghalang kembung memori. Kami juga akan memantau penggunaan memori dan mencetak kemas kini kemajuan. Secara kritikal, ingatlah untuk kembali entiti kembali ke pengurus selepas untuk mengelakkan "entiti-tidak-berpengalaman" kesilapan. gc_collect_cycles()
$manager->clear()
perlawanan: LoadGalleriesData
// Define batch size $batchSize = 100; // ... inside the for loop ... // Save the batch if (($i % $batchSize) == 0 || $i == self::COUNT) { $currentMemoryUsage = round(memory_get_usage(true) / 1024); $maxMemoryUsage = round(memory_get_peak_usage(true) / 1024); echo sprintf("%s Memory usage (currently) %dKB/ (max) %dKB \n", $i, $currentMemoryUsage, $maxMemoryUsage); $manager->flush(); $manager->clear(); gc_collect_cycles(); }
Daripada memuat turun imej secara dinamik, kami akan memilih satu set imej (mis., 15 dari Unsplash) dan menggunakannya semula. Ini mempercepatkan prosesnya. Kaedah
boleh dikemas kini untuk memilih dari set yang telah ditentukan sebelumnya:
generateRandomImage
private function generateRandomImage($imageName) { // Array of pre-selected image filenames $images = ['image1.jpeg', 'image2.jpeg', ...]; // ... (rest of the method remains largely the same) ... }
anda sebelum memuatkan semula lekapan. var/uploads
ujian prestasi dengan Siege dan Docker:
Kami akan menggunakan pengepungan, alat penanda aras HTTP yang kuat, dalam bekas Docker untuk ujian prestasi yang konsisten dan berulang. Ini mengelakkan keperluan pemasangan tempatan dan memastikan persekitaran ujian yang konsisten.
Senario ujian:
kami akan menentukan senario ujian untuk mensimulasikan pelbagai interaksi pengguna, termasuk:
lazy-load-urls.txt
yang mengandungi URL untuk halaman yang dimuatkan malas, ditimbang untuk mensimulasikan tingkah laku pengguna yang realistik. galleries.txt
. Menyediakan phpunit untuk ujian asap:
Suite ujian phpunit asas dengan ujian asap akan memastikan fungsi teras tetap utuh semasa pembangunan dan pengoptimuman. Ujian ini akan mengesahkan kod respons HTTP yang berjaya untuk URL utama.
Kesimpulan:
Teknik terperinci artikel ini untuk membuat dataset yang realistik untuk ujian prestasi dan mewujudkan rangka kerja ujian yang mantap. Artikel masa depan akan menyelidiki pengoptimuman prestasi PHP dan MySQL dan penambahbaikan prestasi selanjutnya.
Soalan -soalan yang sering ditanya (Soalan Lazim):(Soalan Lazim ini sebahagian besarnya sama seperti dalam input asal, tetapi boleh disesuaikan lagi berdasarkan konteks siri post blog khusus ini jika soalan yang lebih spesifik timbul. )
Atas ialah kandungan terperinci Membina Blog Galeri Imej dengan Symfony Flex: Ujian Data. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!