代码之家  ›  专栏  ›  技术社区  ›  Ozzy

php内存溢出?

  •  1
  • Ozzy  · 技术社区  · 15 年前

    我正在构建一个php框架…再一次。

    我有一个名为config的类。

    很简单,它的名字是这样的:

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

    $conf现在是一个充满配置优点的数组。

    班上的权杖是这样的:

    final class config {
    
    private static $configs = array();
    
    public static function get($name) {
    
    return self::$configs[$name];
    
    }
    
    }
    

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

    这个“通用”键保存的数组正好是1兆字节。

    我打电话给你

    config::get('general');
    

    10次变成不同的变量。没有一个变量在之后被编辑…这意味着我有10个变量,每个变量包含1兆字节还是10个变量指向1兆字节?

    2 回复  |  直到 15 年前
        1
  •  4
  •   Michael Krelin - hacker    15 年前

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

    但是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
    
        2
  •  -1
  •   Toby Allen mercator    15 年前

    我的理解是,正如您所写的,您将得到10个数组,每个1MB。

    如果要传入按引用变量并返回指针,或者在函数名前面使用&返回按引用返回值,则可以执行所需的操作。

    推荐文章