phpbar.de logo

Mailinglisten-Archive

[php] Memory Hole?

[php] Memory Hole?

Stefan Sturm stefan.s.sturm at googlemail.com
Mon Mai 18 16:37:49 CEST 2009


Hallo,

wir habe in einem größeren Projekt derzeit ein Problem mit dem
Speicherverbrauch eines Scripts.
Ich habe das Problem in einem kleineres Script reproduzieren können.
Aber vielleicht ist das ja auch ein Feature.

Hier das Script:

<?php

class tubu
{
    protected $object = NULL;

    public function __construct($pObject)
    {
        $this->object = $pObject;
    }
}


class bar
{
    protected $list = array();

    public function __construct()
    {
        $this->init();
    }

    public function init()
    {
        $this->list[] = new tubu($this);
    }
}

class foo
{
    protected $bar = NULL;
    public function doTest()
    {
        for ($i=1; $i<100000;$i++) {
            fwrite(STDOUT, "$i: " . memory_get_usage(true) . "\n");
            $this->bar = new bar();
        }
    }
}


$foo = new foo();
$foo->doTest();

?>

Dieses Script frisst bei jedem Druchlauf mehr Speicher.
Wenn ich in der Function init() in Klasse bar folgende Zeile verwende
ist alles OK.
$this->list[] = new tubu(clone $this); // ein clone vor das $this.

Hat da jemand vielleicht eine Idee?

Danke und Grüße,
Stefan Sturm

php::bar PHP Wiki   -   Listenarchive