【发布时间】:2011-05-21 18:40:34
【问题描述】:
当通过引用传递一个不存在的值时,PHP 会创建该值并将其设置为 NULL。当在某些函数中检查空值时发生内存增加时,我注意到了这一点。取如下函数:
function v(&$v,$d=NULL){return isset($v)?$v:$d;}
$bar = v($foo, $default);
这将是以下的简写:
if(isset($foo))
{
$bar = $foo;
}
else
{
$bar = $default;
}
但是,当传递不存在的变量时,PHP 会创建它们。在变量的情况下 - 一旦方法/函数结束它们就会被删除 - 但对于检查超级全局数组,如 $_GET 或 $_POST 数组元素永远不会被删除,从而导致额外的内存使用。
$request_with = v($_SERVER['HTTP_X_REQUESTED_WITH']);
谁能解释为什么会发生这种情况,以及它是 PHP 待办事项修复还是其他一些疯狂使用值的功能?
【问题讨论】:
-
在 Debian、Ubuntu 和 Windows XP 上运行 PHPFastcgi 的 PHP 5.3.x。