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

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

Feb 08, 2025 am 09:03 AM

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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1677
14
CakePHP 教程
1431
52
Laravel 教程
1333
25
PHP教程
1279
29
C# 教程
1257
24
說明PHP中的安全密碼散列(例如,password_hash,password_verify)。為什麼不使用MD5或SHA1? 說明PHP中的安全密碼散列(例如,password_hash,password_verify)。為什麼不使用MD5或SHA1? Apr 17, 2025 am 12:06 AM

在PHP中,應使用password_hash和password_verify函數實現安全的密碼哈希處理,不應使用MD5或SHA1。1)password_hash生成包含鹽值的哈希,增強安全性。 2)password_verify驗證密碼,通過比較哈希值確保安全。 3)MD5和SHA1易受攻擊且缺乏鹽值,不適合現代密碼安全。

PHP類型提示如何起作用,包括標量類型,返回類型,聯合類型和無效類型? PHP類型提示如何起作用,包括標量類型,返回類型,聯合類型和無效類型? Apr 17, 2025 am 12:25 AM

PHP類型提示提升代碼質量和可讀性。 1)標量類型提示:自PHP7.0起,允許在函數參數中指定基本數據類型,如int、float等。 2)返回類型提示:確保函數返回值類型的一致性。 3)聯合類型提示:自PHP8.0起,允許在函數參數或返回值中指定多個類型。 4)可空類型提示:允許包含null值,處理可能返回空值的函數。

PHP和Python:解釋了不同的範例 PHP和Python:解釋了不同的範例 Apr 18, 2025 am 12:26 AM

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

在PHP和Python之間進行選擇:指南 在PHP和Python之間進行選擇:指南 Apr 18, 2025 am 12:24 AM

PHP適合網頁開發和快速原型開發,Python適用於數據科學和機器學習。 1.PHP用於動態網頁開發,語法簡單,適合快速開發。 2.Python語法簡潔,適用於多領域,庫生態系統強大。

PHP和Python:深入了解他們的歷史 PHP和Python:深入了解他們的歷史 Apr 18, 2025 am 12:25 AM

PHP起源於1994年,由RasmusLerdorf開發,最初用於跟踪網站訪問者,逐漸演變為服務器端腳本語言,廣泛應用於網頁開發。 Python由GuidovanRossum於1980年代末開發,1991年首次發布,強調代碼可讀性和簡潔性,適用於科學計算、數據分析等領域。

PHP和框架:現代化語言 PHP和框架:現代化語言 Apr 18, 2025 am 12:14 AM

PHP在現代化進程中仍然重要,因為它支持大量網站和應用,並通過框架適應開發需求。 1.PHP7提升了性能並引入了新功能。 2.現代框架如Laravel、Symfony和CodeIgniter簡化開發,提高代碼質量。 3.性能優化和最佳實踐進一步提升應用效率。

為什麼要使用PHP?解釋的優點和好處 為什麼要使用PHP?解釋的優點和好處 Apr 16, 2025 am 12:16 AM

PHP的核心優勢包括易於學習、強大的web開發支持、豐富的庫和框架、高性能和可擴展性、跨平台兼容性以及成本效益高。 1)易於學習和使用,適合初學者;2)與web服務器集成好,支持多種數據庫;3)擁有如Laravel等強大框架;4)通過優化可實現高性能;5)支持多種操作系統;6)開源,降低開發成本。

PHP的影響:網絡開發及以後 PHP的影響:網絡開發及以後 Apr 18, 2025 am 12:10 AM

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

See all articles