首頁 > 後端開發 > php教程 > 使用Symfony Flex構建圖片庫博客:數據測試

使用Symfony Flex構建圖片庫博客:數據測試

Joseph Gordon-Levitt
發布: 2025-02-08 09:03:13
原創
653 人瀏覽過

Building an Image Gallery Blog with Symfony Flex: Data Testing

本文是使用Symfony Flex構建高性能多圖庫博客的系列文章的一部分。 (在此處查看存儲庫。)

在上一期中,我們設置了一個基本的Symfony項目,創建了初始固定裝置,並運行了應用程序。本文重點介紹使用現實的數據集填充數據庫,以進行性能基準測試。 我們還將介紹設置Phpunit測試套件。

>

密鑰目標:

  • >利用Symfony Flex,以進行有效的開發和多圖庫博客的性能優化。
  • 在數據固定期間實現用於有效內存管理的學說批處理處理。
  • >通過預選圖像並重用它們減少資源消耗來優化圖像處理。 >
  • >使用攻城(通過Docker)進行徹底的性能測試,以模擬現實世界的用戶交互。
  • >建立具有功能和煙霧測試的強大PHPUNIT測試框架,以確保應用程序可靠性。

生成較大的數據集:>

初始開發後,創建較大的數據集對於現實的性能測試至關重要。 雖然小型固定裝置適合開發,但性能測試需要大量的數據。 簡單地增加我們的固定裝置類(如下所示)中的常數效率低下,並且可能導致內存耗盡錯誤:

COUNT

這種方法很慢,容易出現內存錯誤(
// src/DataFixtures/ORM/LoadUsersData.php
const COUNT = 500;
// src/DataFixtures/ORM/LoadGalleriesData.php
const COUNT = 1000;
登入後複製
),並且由於使用Faker的重複下載而效率低下

PHP Fatal error: Allowed memory size of N bytes exhausted>優化批處理處理學說:

> 為了解決這些問題,我們將在學說中實施批處理處理。我們將定義一個批處理大小(例如,100個畫廊),每批批量沖洗並清除EntityManager,並使用垃圾收集(

)。 這樣可以防止內存膨脹。 我們還將監視內存使用情況並打印進度更新。 至關重要的是,請記住在之後重新合併實體重新回到經理中,以避免“實體 - 不使用”錯誤。

優化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

與攻城和碼頭的性能測試:>

>我們將在Docker容器中使用功能強大的HTTP基準測試工具Siege,以一致且可重複的性能測試。 這避免了對本地安裝的需求,並確保了一致的測試環境。

測試方案:

我們將定義測試方案以模擬各種用戶互動,包括:

>主頁:
    >測試後續圖庫頁面的初始負載和懶惰加載。 我們將使用一個包含lazy載荷頁面的URL的文件,加權以模擬現實的用戶行為。
  • 單個畫廊頁面:>使用lazy-load-urls.txt>中的URL列表來測試單個畫廊頁面的性能
  • >設置用於菸霧測試的phpunit:> galleries.txt>帶有煙霧測試的基本Phpunit測試套件將確保在開發和優化過程中核心功能保持完整。 這些測試將驗證關鍵URL的成功HTTP響應代碼。
結論:

>本文詳細介紹了用於創建用於性能測試和建立強大測試框架的現實數據集的技術。 未來的文章將深入研究PHP和MySQL性能優化和進一步的性能改進。 >

常見問題(常見問題解答):

(這些常見問題完全與原始輸入相同,但如果出現更多的特定問題,則可以根據此特定博客文章系列的上下文進行進一步量身定制。 )

以上是使用Symfony Flex構建圖片庫博客:數據測試的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板