首页 >后端开发 >php教程 >使用Symfony Flex构建图片库博客:数据测试

使用Symfony Flex构建图片库博客:数据测试

Joseph Gordon-Levitt
Joseph Gordon-Levitt原创
2025-02-08 09:03:13694浏览

Building an Image Gallery Blog with Symfony Flex: Data Testing

本文是使用Symfony Flex构建高性能多图库博客的系列文章的一部分。 (在此处查看存储库。)

在上一期中,我们设置了一个基本的Symfony项目,创建了初始固定装置,并运行了应用程序。本文重点介绍使用现实的数据集填充数据库,以进行性能基准测试。 我们还将介绍设置Phpunit测试套件。

>

密钥目标:

  • >利用Symfony Flex,以进行有效的开发和多图库博客的性能优化。
  • 在数据固定期间实现用于有效内存管理的学说批处理处理。
  • >通过预选图像并重用它们减少资源消耗来优化图像处理。>
  • >使用攻城(通过Docker)进行彻底的性能测试,以模拟现实世界的用户交互。
  • >建立具有功能和烟雾测试的强大PHPUNIT测试框架,以确保应用程序可靠性。

生成较大的数据集:>

初始开发后,创建较大的数据集对于现实的性能测试至关重要。 虽然小型固定装置适合开发,但性能测试需要大量的数据。 简单地增加我们的固定装置类(如下所示)中的常数效率低下,并且可能导致内存耗尽错误:

COUNT

这种方法很慢,容易出现内存错误(
<code class="language-php">// src/DataFixtures/ORM/LoadUsersData.php
const COUNT = 500;
// src/DataFixtures/ORM/LoadGalleriesData.php
const COUNT = 1000;</code>
),并且由于使用Faker的重复下载而效率低下

PHP Fatal error: Allowed memory size of N bytes exhausted>优化批处理处理学说:

> 为了解决这些问题,我们将在学说中实施批处理处理。我们将定义一个批处理大小(例如,100个画廊),每批批量冲洗并清除EntityManager,并使用垃圾收集(

)。 这样可以防止内存膨胀。 我们还将监视内存使用情况并打印进度更新。 至关重要的是,请记住在之后重新合并实体重新回到经理中,以避免“实体 - 不使用”错误。

优化gc_collect_cycles()夹具的示例:$manager->clear()

>

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

>而不是动态下载图像,我们将预选一组图像(例如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