本文是使用Symfony Flex构建高性能多图库博客的系列文章的一部分。 (在此处查看存储库。)
在上一期中,我们设置了一个基本的Symfony项目,创建了初始固定装置,并运行了应用程序。本文重点介绍使用现实的数据集填充数据库,以进行性能基准测试。 我们还将介绍设置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
>优化批处理处理学说:
)。 这样可以防止内存膨胀。 我们还将监视内存使用情况并打印进度更新。 至关重要的是,请记住在之后重新合并实体重新回到经理中,以避免“实体 - 不使用”错误。
优化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
与攻城和码头的性能测试:
测试方案:
我们将定义测试方案以模拟各种用户互动,包括:
lazy-load-urls.txt
>中的URL列表来测试单个画廊页面的性能
galleries.txt
>带有烟雾测试的基本Phpunit测试套件将确保在开发和优化过程中核心功能保持完整。 这些测试将验证关键URL的成功HTTP响应代码。
>本文详细介绍了用于创建用于性能测试和建立强大测试框架的现实数据集的技术。 未来的文章将深入研究PHP和MySQL性能优化和进一步的性能改进。 >
常见问题(常见问题解答):(这些常见问题完全与原始输入相同,但如果出现更多的特定问题,则可以根据此特定博客文章系列的上下文进行进一步量身定制。 )
以上是使用Symfony Flex构建图片库博客:数据测试的详细内容。更多信息请关注PHP中文网其他相关文章!