【问题标题】:How much memory has a php script? Can I free memory during execution?一个php脚本有多少内存?我可以在执行期间释放内存吗?
【发布时间】:2017-03-07 11:27:53
【问题描述】:

php 脚本能否获得允许的内存大小以及可以分配多少内存?我知道可以使用unset 清理内存。但我想了解如何创建尽可能少消耗内存的 php 脚本。

【问题讨论】:

  • 您可能想在这里查看memory_limitphp.net/manual/en/ini.core.php
  • @sensorario 您可以遵循一些标准指南。 1.不要使用未使用的变量。 2. 如果可能的话,如果您不需要再次执行该变量,则只需在使用该变量后立即取消设置该变量。另请记住,这取决于您正在处理的逻辑、结构和代码。在google,你可以有一些关于优化PHP内存的东西。

标签: php


【解决方案1】:

PHP使用的基本机制是garbage collection

简而言之,它的工作原理是这样的:

假设您分配了某个内存位置M 来存储变量$m 例如:

$m = [ 0,1,2,3,4,5 ]; //M refers to the memory which is storing this array

只要$m 一直指向M 就不允许PHP 破坏M。但是,如果您执行以下操作:

$m = null;

这使得$m 指向任何东西,因此M 不再被任何东西引用。 PHP 此时被允许清除该内存,但可能不会立即这样做。关键是,如果您确保在不再需要某些内容时停止引用它,您就可以让 PHP 有机会尽可能优化内存运行。

但是,大型复杂应用程序的垃圾收集成本很高,因此请记住,如果可以,PHP 可能会选择延迟垃圾收集。

【讨论】:

    【解决方案2】:

    unset 将释放内存。

    虽然主要的内存消耗将在来自 io、db 等的资源上。

    对于这些任务,释放内存或释放资源以供进一步使用非常重要。

    还要注意,在处理时,处理后的数据也将具有几乎相似的用途。因此,在使用后释放它也将改善用例。

    为了越来越少的内存,尽可能使函数纯净,函数执行后,只有输出,没有副作用。这样一来,全局内存空间中的东西就会减少。

    【讨论】:

      猜你喜欢
      • 2017-09-08
      • 2015-04-21
      • 2020-09-23
      • 2015-06-26
      • 2019-02-18
      • 2016-09-03
      • 1970-01-01
      • 2015-06-10
      • 2016-05-22
      相关资源
      最近更新 更多