3
例如,當減少內存使用:如何傳遞大變量周圍
a(wordwrap(str_repeat('abcdef', 500000), 160, "\n", true));
function a($v){
$v[1] = 'x';
$v = b($v);
return $v;
}
function b($v){
$v[2] = 'x';
$v = c($v);
return $v;
}
function c($v){
$v[3] = 'x';
d($v);
}
function d($v){
$v[4] = 'x';
print $v;
}
這使用〜23 MB。我認爲是因爲PHP在每個修改中都創建了該文本的副本。 如果我只在使用12 MB時打印文本。
在函數被調用之前,我可以以某種方式釋放原始變量的內存嗎?像
unset($v);
$v = c($v);
顯然,這是行不通的,因爲它被傳遞給c()
前笑$v
被破壞。但我想以某種方式讓c()
修改相同的文本。就像使用引用。 (我試過參考,但他們實際上增加了內存使用量,可能是因爲PHP製作了更多副本)
奇怪的是,它是我上面發佈的代碼,但它對於我正在工作的實際代碼更高:( – Alex 2013-03-27 13:40:53
也許,您錯過了一些重要的部分,它在實際代碼中佔用了內存?是否太大/複雜/共享軟件在這裏發佈? – 2013-03-27 13:44:55