【问题标题】:Unset all variables? (Not $_SESSION[''] or globals)取消设置所有变量? (不是 $_SESSION[''] 或全局变量)
【发布时间】:2012-10-23 21:45:45
【问题描述】:

好的,所以我正在寻找一种方法来取消设置页面生成的所有变量,而不是全局变量或会话。

我在另一个 SO 问题中发现了这一点:

$list_of_vars =  array_diff(get_defined_vars(), $GLOBALS); // Was just get_defined_vars() before Marc B corrected me in his post.
foreach($list_of_vars as $var){
    unset($var);
}

问题是,在 cmets 中,据说这个 unsets() ALL 就像在 ALL 变量中的 include 全局变量和会话一样。我需要一种方法来重置所有非全局变量和非会话变量

我这样做是为了优化 RAM。如果这没有帮助,还有其他优化 RAM 的方法吗?

【问题讨论】:

  • *facepalm* 这不是如何优化 RAM 使用。使用更高效的数据结构或查询更少的信息。

标签: php variables ram


【解决方案1】:

这绝对不是优化脚本 RAM 使用率的方法。

您想确定脚本的问题区域,并着手解决这些问题。

在不知道您的脚本做什么的情况下很难给出任何提示。以下是一些关于 SO 讨论的指针(部分是非常高级的和/或特定于框架的,但它们仍然包含有价值的信息):

【讨论】:

  • 好的,这是有道理的,我猜 PHP 文件最后会自动取消设置所有变量,但想确保......我还有一个页面:pastebin.com/4GtxexqU(过期一天)。这用尽了我会说最多的内存,因为它有很多查询和获取。有什么合乎逻辑的例子可以说明我可以做些什么来解决这个问题(不是要求你解决所有问题,只是想知道我能做什么或需要看看以避免过度使用 ram)。该页面从数据库中获取数据并在 HTML 中回显它,其中一些可能是兆字节的数据......
  • 并且正在做 $var = $var2;使用 $var 和 $var2 的内存?如果是这样,还有其他重命名变量的方法吗?
  • @muqman 我现在无法查看代码,但@nickhar 的建议值得跟进:使用 PHP 分析器,或者只是调用 memory_get_usage() 来找出究竟有多少 RAM用来。一般来说,您将大量页面塞进一个 PHP 文件中。如果您将各个区域分开,您可能会发现代码更易于分析
  • 完全理解代码。我不是要你:) 我将如何描述?这就是我设置大约 50 个页面的方式...
  • 我没有看到任何明显的地方会加载过多的数据。无论如何都要摆脱SELECT *。加载所有列可能会加载您不需要的数据,包括进入数据库的兆字节图像数据,但您现在不记得了。
【解决方案2】:

如果您希望修复脚本中的大量 RAM 使用问题,最好通过对其进行分析来准确了解您的脚本在做什么!

【讨论】:

  • 试试xdebug 过去用过很多次。基本上可以让你看到你的脚本在不同的时间点做了什么,以及每个部分的过程/内存使用情况。
  • ok.. 我怎么说这个简介? (pastebin.com/4GtxexqU) 或任何其他 php?
  • 哦,我的 - 这是一个相当复杂的脚本。这可能会很复杂,因为您在那里做了很多事情。
猜你喜欢
  • 2012-01-26
  • 1970-01-01
  • 2012-08-30
  • 2012-01-27
  • 2017-09-27
  • 2017-09-12
  • 2011-11-08
  • 2013-12-25
  • 2010-09-09
相关资源
最近更新 更多