Heim >Backend-Entwicklung >PHP-Tutorial >Erstellen eines Bildergalerie -Blogs mit Symfony Flex: Datentests
Dieser Artikel ist Teil einer Reihe zum Erstellen eines Hochleistungs-Multi-Image-Galerie-Blogs mit Symfony Flex. (Sehen Sie sich das Repository hier an.)
In der vorherigen Rate haben wir ein grundlegendes Symfony -Projekt eingerichtet, erste Leuchten erstellt und die Anwendung zum Laufen gebracht. Dieser Artikel konzentriert sich darauf, die Datenbank mit einem realistischen Datensatz für das Benchmarking von Performance -Benchmarking zu bevölkern. Wir werden auch eine Phpunit -Testsuite einrichten.
Schlüsselziele:
Generieren eines größeren Datensatzes:
Nach der ersten Entwicklung ist das Erstellen eines größeren Datensatzes für realistische Leistungstests von entscheidender Bedeutung. Während kleine Vorrichtungen für die Entwicklung geeignet sind, erfordert Leistungstests ein deutlich größeres Datenvolumen. Das einfache Erhöhen der COUNT
-Konstanten in unseren Fixture -Klassen (wie unten gezeigt) ist ineffizient und kann zu Erschöpfungsfehlern von Speicher führen:
<code class="language-php">// src/DataFixtures/ORM/LoadUsersData.php const COUNT = 500; // src/DataFixtures/ORM/LoadGalleriesData.php const COUNT = 1000;</code>
Dieser Ansatz ist langsam, anfällig für Speicherfehler (PHP Fatal error: Allowed memory size of N bytes exhausted
) und aufgrund von wiederholten Bilddownloads mit Faker ineffizient.
Optimierung der Lehre für die Stapelverarbeitung:
gc_collect_cycles()
Um diese Probleme anzugehen, werden wir die Stapelverarbeitung in der Doktrin implementieren. Wir definieren eine Chargengröße (z. B. 100 Galerien), spülen und löschen den EntityManager nach jeder Charge und verwenden die Müllsammlung ($manager->clear()
). Dies verhindert das Gedächtnis aufzublähen. Wir werden auch die Speichernutzung überwachen und Fortschrittsaktualisierungen drucken. Entscheidend ist, dass Sie nach
LoadGalleriesData
Beispiel für optimierte Fixture:
<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>
Bildhandlung optimieren:
generateRandomImage
Anstatt Bilder dynamisch herunterzuladen, wählen wir einen Satz von Bildern (z. B. 15 von Unsplash) vor und verwenden sie wieder. Dies beschleunigt den Prozess erheblich. Die Methode
<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>
var/uploads
Denken Sie daran, einen Befehl hinzuzufügen, um das Verzeichnis bin/refreshDb.sh
in Ihrem
Leistungstest mit Belagerung und Docker:
Wir werden Siege, ein leistungsstarkes HTTP -Benchmarking -Tool, in einem Docker -Container für konsistente und wiederholbare Leistungstests verwenden. Dies vermeidet die Notwendigkeit lokaler Installationen und sorgt für konsistente Testumgebungen.
Testenszenarien:
Wir definieren Testszenarien, um verschiedene Benutzerinteraktionen zu simulieren, einschließlich:
lazy-load-urls.txt
-Datei verwenden, die URLs für faul beladene Seiten enthält, gewichtet, um das realistische Benutzerverhalten zu simulieren. galleries.txt
. Einrichten von Phpunit für Rauchtests:
Eine grundlegende Phpunit -Testsuite mit Rauchtests stellt sicher, dass die Kernfunktionalität während der Entwicklung und Optimierung intakt bleibt. Diese Tests überprüfen erfolgreiche HTTP -Antwortcodes für Schlüssel -URLs.
Schlussfolgerung:
In diesem Artikel detaillierten Techniken zum Erstellen eines realistischen Datensatzes für Leistungstests und Festlegung eines robusten Test -Frameworks. Zukünftige Artikel werden sich mit PHP- und MySQL -Leistungsoptimierung und weiteren Leistungsverbesserungen befassen.
häufig gestellte Fragen (FAQs): (Diese FAQs bleiben weitgehend die gleichen wie in der ursprünglichen Eingabe, könnten jedoch auf der Grundlage des Kontextes dieser spezifischen Blog -Postserie weiter zugeschnitten werden, wenn spezifischere Fragen auftreten. )
Das obige ist der detaillierte Inhalt vonErstellen eines Bildergalerie -Blogs mit Symfony Flex: Datentests. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!