本文是使用Symfony Flex構建高性能多圖庫博客的系列文章的一部分。 (在此處查看存儲庫。)
在上一期中,我們設置了一個基本的Symfony項目,創建了初始固定裝置,並運行了應用程序。本文重點介紹使用現實的數據集填充數據庫,以進行性能基準測試。 我們還將介紹設置Phpunit測試套件。
>密鑰目標:
生成較大的數據集:>
初始開發後,創建較大的數據集對於現實的性能測試至關重要。 雖然小型固定裝置適合開發,但性能測試需要大量的數據。 簡單地增加我們的固定裝置類(如下所示)中的常數效率低下,並且可能導致內存耗盡錯誤:
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
>優化批處理處理學說:
)。 這樣可以防止內存膨脹。 我們還將監視內存使用情況並打印進度更新。 至關重要的是,請記住在之後重新合併實體重新回到經理中,以避免“實體 - 不使用”錯誤。
優化gc_collect_cycles()
夾具的示例:$manager->clear()
>
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(); }
>而不是動態下載圖像,我們將預選一組圖像(例如15個來自Unsplash)並重複使用它們。 這大大加快了這一過程。 可以更新的方法以從此預定義的集合中進行選擇:
>腳本中的目錄。 generateRandomImage
與攻城和碼頭的性能測試:
測試方案:
我們將定義測試方案以模擬各種用戶互動,包括:
lazy-load-urls.txt
>中的URL列表來測試單個畫廊頁面的性能
galleries.txt
>帶有煙霧測試的基本Phpunit測試套件將確保在開發和優化過程中核心功能保持完整。 這些測試將驗證關鍵URL的成功HTTP響應代碼。
>本文詳細介紹了用於創建用於性能測試和建立強大測試框架的現實數據集的技術。 未來的文章將深入研究PHP和MySQL性能優化和進一步的性能改進。 >
常見問題(常見問題解答):(這些常見問題完全與原始輸入相同,但如果出現更多的特定問題,則可以根據此特定博客文章系列的上下文進行進一步量身定制。 )
以上是使用Symfony Flex構建圖片庫博客:數據測試的詳細內容。更多資訊請關注PHP中文網其他相關文章!