相关疑难解决方法(0)

PHP在函数结束后立即释放局部变量吗?

代码更好地说明了我的要求:

function foo(){

  $var = get_huge_amount_of_data();

  return $var[0];
}


$s = foo();

// is memory freed here for the $var variable created above?

do_other_stuff(); // need memory here lol
Run Code Online (Sandbox Code Playgroud)

所以我知道$ var在某些时候会被释放,但PHP是否有效地做到了?或者我手动需要取消设置昂贵的变量?

php memory

8
推荐指数
2
解决办法
6624
查看次数

PHP 中的垃圾回收是如何工作的?即,局部函数变量如何清理?

如果我为函数内未声明为全局的变量分配一个值,该变量会在函数终止时自动取消设置还是仅在 PHP 脚本执行完毕时才会取消设置?

我试图确定手动取消设置函数内的临时函数作用域变量是否更明智,或者不担心,因为它们将被 PHP 引擎自动取消设置。

php variables garbage-collection scope

4
推荐指数
1
解决办法
2483
查看次数

在PHP中,通过引用传递大量数据而不是通过值传递资源是否更少(更聪明)?

可能重复:
在PHP(> = 5.0)中,更快地通过引用传递?

假设我正在处理一个大数据(有多大并不重要)数据数组并将其传递给函数.当然,它将通过值传递,而不是默认情况下通过引用传递.好的,我知道.

所以我的问题是:

如果存储在此数组中的数据足够大,则可以通过将数据存储在对象(例如,stdClass)中或通过使用foo(&$ myData)来获得有价值的性能或内存使用增益,以便通过引用传递数据而不是价值?

我的理解是,当它通过值传递时,PHP将创建一个全新的指针,指向数据的全新内存分配,而传递的值变量存在于函数范围中.在这种情况下,由于这个原因,可能通过引用传递大量数据是值得的吗?我不知道这种理解是否正确......这是问题的一部分.

注意:这是一个假设,所以不要提出任何关于"过早优化","你最好在最小化磁盘I/O然后再担心这个","取决于你有多少RAM","等等."

UPDATE

还有一个问题:假设数据被传递给一个对象构造函数,以便存储为该对象的一个​​属性,并且它会以一些小的方式被修改,因为它存储在新对象的属性中.那么操作的内存使用方面是否会有显着差异?假设最好以目标格式定义数据以避免因改变数据线而产生的成本,这是正确的吗?

php

4
推荐指数
2
解决办法
286
查看次数

标签 统计

php ×3

garbage-collection ×1

memory ×1

scope ×1

variables ×1