Wie wichtig ist das unsetten von Klassen, Variablen… in PHP
Posted by garkeinplan | Posted in PHP | Posted on 14.09.2010 18:12-
1
Da ich mich das auch gefragte habe, dachte ich mir ich mach einfach einen Test…
Also wie wichtig ist es nun wirklich das ich Variablen, Klassen und Methoden im PHP Code unsette?
Ich habe den Test gemacht und das Ergebnis ist nicht verwunderlich.
Das ist mein PHP Code ohne des unsetten der Klassen:
<?php
class Foo
{
public $var = '3.1415962654';
}
$baseMemory = memory_get_usage();
for ( $i = 0; $i <= 100000; $i++ )
{
$a = new Foo;
$a->self = $a;
}
echo ((memory_get_peak_usage()) / 1024 /024). " MB\n";
echo ((memory_get_usage() - $baseMemory) / 1024 / 1024) . " MB\n";
?>
Dabei kam folgendes Resultat heraus:
Der Memory Peak lad bei unglaublichen 3395,21 MB Das sind 3,3GB!!!
Und der ganze Memory Verbrauch lad bei 66,23 MB.
[/sourcecode]
Also habe ich das ganze nochmal mit unsetten der Klasse im PHP Code gemacht:
<?php
class Foo
{
public $var = '3.1415962654';
// Das ist die neue Funktion zum vernichten der Klasse
function destroy()
{
$this->self = null;
}
}
$baseMemory = memory_get_usage();
for ( $i = 0; $i <= 100000; $i++ )
{
$a = new Foo;
$a->self = $a;
$a->destroy(); // Hier wird die Klasse bei jedem Aufruf vernichtet
}
echo ((memory_get_peak_usage()) / 1024 /024). " MB\n";
echo ((memory_get_usage() - $baseMemory) / 1024 / 1024) . " MB\n";
?>
Und siehe da…. es ist sogar sehr wichtig, dass wir in unserem PHP Code Klassen, Variablen und Mehtoden unsetten!
Der Memory Peak beträgt jetzt nur noch 5,10 MB!!!
Und der komplette Memory Verbraucht liegt bei gerade mal 0,0014 MB was ca. 1,4 KB sind.
Hier nochmal die Zusammenfassung mit und ohne unsetten der Klassen im PHP Code.
Verbraucht mit reset: 5.1078125 MB 0.00140380859375 MB Verbrauch ohne reset: 3395.219140625 MB 66.230880737305 MB

![Validate my RSS feed [Valid RSS]](/valid-rss-rogers.png)
Danke für den Test!