Rumah >pembangunan bahagian belakang >tutorial php >Membina Blog Galeri Imej dengan Symfony Flex: Ujian Data

Membina Blog Galeri Imej dengan Symfony Flex: Ujian Data

Joseph Gordon-Levitt
Joseph Gordon-Levittasal
2025-02-08 09:03:13655semak imbas

Building an Image Gallery Blog with Symfony Flex: Data Testing

Artikel ini adalah sebahagian daripada siri untuk membina blog galeri multi-imej berprestasi tinggi menggunakan Symfony Flex. (Lihat repositori di sini.)

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:

    Leverage Symfony Flex untuk pembangunan yang cekap dan pengoptimuman prestasi blog galeri multi-imej.
  • Melaksanakan pemprosesan batch doktrin untuk pengurusan memori yang cekap semasa memuatkan perlawanan data.
  • Mengoptimumkan pengendalian imej dengan memilih imej pra-memilih dan menggunakan semula mereka untuk mengurangkan penggunaan sumber.
  • menjalankan ujian prestasi menyeluruh menggunakan pengepungan (melalui Docker) untuk mensimulasikan interaksi pengguna dunia sebenar.
  • Mewujudkan rangka kerja ujian phpunit yang mantap dengan ujian fungsional dan asap untuk memastikan kebolehpercayaan aplikasi.

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

<code class="language-php">// src/DataFixtures/ORM/LoadUsersData.php
const COUNT = 500;
// src/DataFixtures/ORM/LoadGalleriesData.php
const COUNT = 1000;</code>
Pendekatan ini perlahan, terdedah kepada ralat ingatan (), dan tidak cekap kerana muat turun imej berulang menggunakan Faker.

PHP Fatal error: Allowed memory size of N bytes exhausted

Mengoptimumkan doktrin untuk pemprosesan batch:

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

Contoh optimum

perlawanan: LoadGalleriesData

<code class="language-php">// 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();
}</code>
Mengoptimumkan pengendalian imej:

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

ingat untuk menambah arahan untuk membersihkan direktori
<code class="language-php">private function generateRandomImage($imageName) {
    // Array of pre-selected image filenames
    $images = ['image1.jpeg', 'image2.jpeg', ...];
    // ... (rest of the method remains largely the same) ...
}</code>
dalam skrip

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:

  • Homepage: Menguji beban awal dan memuatkan malas halaman galeri berikutnya. Kami akan menggunakan fail lazy-load-urls.txt yang mengandungi URL untuk halaman yang dimuatkan malas, ditimbang untuk mensimulasikan tingkah laku pengguna yang realistik.
  • Halaman galeri tunggal: Menguji prestasi halaman galeri individu menggunakan senarai URL dalam 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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn