gpt4 book ai didi

php - LAMP/Laravel - 报告生成最大化单个 CPU

转载 作者:行者123 更新时间:2023-11-29 03:26:12 25 4
gpt4 key购买 nike

所以我用Laravel开发了一个报表生成系统。我们在 centos 7 机器上使用 php 7(启用 opcache)/apache/mysql/。对于一份报告,获取所有信息最终需要大约 15 秒,但随后我必须遍历并对集合等进行一系列过滤。我已经从上到下优化了大约一周,并获得了整个报告生成大约需要 45 秒(处理具有大于 100 万个条目的多个表)。这当然会耗尽我的 CPU,直到它完成。

我的问题是,当我们将其实时推送给客户端时,他们的 CPU 无法胜任这项任务。他们有 4 个 cpu,每个 8 个内核,频率为 2.2ghz。然而,由于 php 是一个单一进程,它只在一个 cpu 上运行并最大化它,而且由于它太慢了,运行报告需要将近 10 分钟。

有没有办法让 apache/php/linux ......无论如何......将所有 4 个 cpu 用于单个 php 进程?唯一的其他选择是告诉客户他们需要更好的服务器……不是一个选择。请帮忙。

最佳答案

所以我不再尝试寻找让服务器更好地处理我的代码的方法,而是找到了一些优化代码的方法。

首先,我使用集合 groupBy() 方法对我的集合进行分组,这样我就有了一堆以 id 作为键的子数组。当我遍历这些时,我只是捕获了那个子数组,而不是使用集合的 filter() 方法,这在处理这么多项目时真的很慢。这为我节省了很多处理能力。

其次,每次使用子数组时,我都会将其从主数组中删除。所以每次经过foreach,数组都会变得越来越小。

这些优化最终为我节省了大量处理能力,现在我的报告运行良好。经过几天寻找允许 php 处理并行处理等的方法后,我得出的结论是它根本不可能。

希望这对您有所帮助。

关于php - LAMP/Laravel - 报告生成最大化单个 CPU,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35997817/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com