【问题标题】:How can I test / see the memory footprint of a PHP script?如何测试/查看 PHP 脚本的内存占用?
【发布时间】:2019-05-17 08:38:57
【问题描述】:

在 WordPress 中,可以使用某些参数调用 WP_Query 类以从数据库中检索帖子(数据)。不幸的是,对象本身很大,如果它检索 300-400 个帖子,它会很快变得忙碌,因为假设你将这个 WP_Query 及其新发现的帖子存储在一个数组中,它会很快变大,我可以看到它吃在本地主机上增加了大约 30-40mb 的内存,这已经是一台功能强大的机器,所以我决定在我的服务器机器上进行测试,因为它运行的是 Linux,所以内存使用量要低一些,但仍然相同。

现在,假设我有 800 个帖子。这是一个非常、非常真实且经常遇到的可能性,哎呀,我看到很多客户网站都有更多帖子。

显然,我的脚本首先会超过在坏主机上的执行时间,其次,如果它到达这里,则会耗尽内存。

我有点知道如何解决它并且取得了很好的成功但是我完全盲目地进入了,只是看任务管理器的内存消耗之间的差异。

是否没有工具可以将某个脚本的内存消耗与其执行时间映射在一起? XDEBUG 只显示执行时间。

【问题讨论】:

  • @Jeff 相信我,我已经尝试过搜索,我尊重每个人的时间,所以我以前尽职尽责 - 但这对我没有太大帮助,也许我做错了什么,但这是另一个问题。是否没有工具可以利用它来封装我的脚本以在可以输出图表的“跟踪沙箱”中运行它们?

标签: php performance xdebug


【解决方案1】:

总的来说,如果我可以通过 SSH 或其他方式访问,我通常使用 top 命令(适用于 linux 机器)。但是这里是各种内存检查相关命令的列表: https://www.cyberciti.biz/faq/linux-check-memory-usage/

我用过的另一件事是这个插件:https://wordpress.org/plugins/wp-server-stats/ 但是,它只会告诉您可用/使用了多少内存。不足以告诉您哪个脚本正在使用内存。

最后,我最喜欢的用于诊断查询问题的插件之一: https://wordpress.org/plugins/query-monitor/

如果这些没有提供足够具体的细节,请告诉我,我们可以深入研究:)

【讨论】:

  • 另外,如果您需要有关如何提高 WordPress 查询效率的具体帮助,请告诉我。
  • 查询监视器帮了大忙,真的,XDEBUG 帮助我缩小了问题所在。我在尝试让数百个“模拟客户端”在本地主机上浏览以查看究竟是什么阻塞时运行 XDEBUG,但从未看到 ram 使用情况,不幸的是,您的回答并没有真正帮助我,因为对于开发,我在 Windows 上运行并且不能持续部署,我会尝试参考一些无关的Windows诊断工具。至于优化 WP 查询,当然,我很乐意阅读有关它的任何内容。
  • 您使用的是什么版本的 Windows,以及您使用什么软件来运行您的 localhost?就查询效率而言,您可能会发现这很有用:codex.wordpress.org/Class_Reference/WP_Meta_Query 通常,您可以通过使查询更具体来避免抓取一大堆帖子。设置分类法也很有帮助。
  • WP_QueryWP_Query 在查询大量帖子时都表现不佳。
  • 抓取整篇帖子时查询和返回的数据很多。如果您绝对需要返回如此多的发布数据,那么最好进行查询并将其存储在瞬态或其他形式的类似缓存的状态中,这样您就不需要继续运行查询。然后您可以根据需要在后台对其进行更新。如果您可以提供有关您的实施的更多信息,也许我们可以提出一种提高性能的方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-13
  • 2014-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-02
相关资源
最近更新 更多