PHP内存溢出?

时间:2009-12-18 21:10:06

标签: php arrays memory reference pointers

我目前正在构建一个php框架......

我有一个名为config的课程。

非常简单,就像这样:

$conf = config::get('general');

$ conf现在是一个充满配置好吃的数组。

类sceleton就像这样:

final class config {

private static $configs = array();

public static function get($name) {

return self::$configs[$name];

}

}

假设$ configs数组已经填充并且有一个“常规”键。

这个“常规”键包含一个正好为1兆字节的数组。

让我说我打电话

config::get('general');

10次进入不同的变量。之后没有编辑任何变量...这是否意味着我有10个变量,每个变量包含1兆字节或10个变量指向1兆字节?

2 个答案:

答案 0 :(得分:4)

只有一个,如果你不修改它们。

但是php不是你可以依赖任何特定行为的语言; - )

刚试过:

<?php

printf("%10d\n",memory_get_usage());
$a = array_fill(0,30000,'oh');
printf("%10d\n",memory_get_usage());
$b = $a;
printf("%10d\n",memory_get_usage());
$b[] = '';
printf("%10d\n",memory_get_usage());

输出:

    325524
   2256916
   2256980
   4188316

答案 1 :(得分:-1)

我的理解是,正如你所写的那样,每1MB会得到10个数组。

如果你是我们&amp;要么传入一个引用变量并返回一个指针,要么使用&amp;在函数名称前面返回一个按引用返回值,你可以做你想做的事。