如果我给变量赋值,但在函数中没有声明为全局变量,那么该变量是在函数终止时自动取消设置,还是仅在PHP脚本执行完毕时才取消设置?
我正在尝试确定是手动取消设置函数中的临时函数作用域变量,还是不用担心,因为PHP引擎会自动取消设置它们。
发布于 2011-04-22 05:35:42
当函数退出时,变量将被取消设置,除非它有外部引用,这将使它保持“活动”。变量实际占用的内存是否被释放完全取决于垃圾收集器。GC是一个开销很大的操作,PHP只会在需要的时候调用它(例如内存变得紧张)。
发布于 2011-04-22 05:37:30
这完全取决于函数的作用域。理论上,您可以让整个脚本在一个函数的作用域内运行(希望是调用其他函数的函数,但仍然...)。
对于具有最小副作用的合理大小的函数,完全可以保留对象集--它们的析构函数将在函数完成时被调用(这是unset的第二个效果),并且它们将在函数完成后的第一个清理周期中被清除。对于涉及在大量对象上创建的较大函数,手动删除这些对象可能更好。
https://stackoverflow.com/questions/5750014
复制相似问题