Unset($Variable) - Lohnt sich das überhaupt?

Alice

Erfahrenes Mitglied
Hallo.

Ich habe zu dieser Frage zwar die SuFu benutzt aber nicht wirklich etwas hilfreiches gefunden.

Ich versuche mein PHP-Skript so Ressourcenfreundlich wie möglich zu programmieren.

Da bin ich auf "unset($foo);" gestoßen und habe das natürlich etwas getestet.

Nur Frage ich mich ob es sich überhaupt lohnt dieses zu benutzen? Auf der einen Seite möchte ich natürlich Speicher sparen aber auf der anderen Seite DENKE ICH das alleine der Befehl "unset" wieder Rechenkraft benötigt und auch die Laufzeit des Skriptes erhöht.

In meinem Skript habe ich z.B. 50 Variablen die ich nur kurz brauche. Wenn man den Gesamten Text mit allen Zeichen zusammenzählen würde, käme man auf ca. 80-100 Zeichen an einem Stück.

Jetzt habe ich das mal getestet.

PHP:
echo memory_get_usage() . "\n";

   unset($foo_01);
   ...
   ...
   ...

echo memory_get_usage() . "\n";

Ich habe dann das erste Ergebnis - das zweite Ergebnis gerechnet und es kam "10960 Byte" raus.

Das ist ja so gut wie nichts.

Sehe ich das richtig oder falsch?
 
Das empfiehlt sich eigentlich nur in größeren Schleifen die irgendwas abarbeiten. Nach abarbeitung des Skriptes wird der verwendet und nicht mehr benötigte Speicher normalerweise sowieso geleert.

Also ich mach dieses nur bei größeren Objekten/Arrays welche in Schleifen instanziert/definiert werden und nur innerhalb der Schleife gültig sind.
 
Ok dann werde ich das auch so machen.

Führst du das "Unset" noch in der Schleife (Klammern) aus oder danach?
 
für was brauchts da ein Beispiel?

PHP:
$testArray = array();

for($i=0; $i < 10000; $i++)
{
      array_push($testArray, $i);

      //alle 100 durchläufe einen Request
      if($i % 100 == 0){
          //verschicke die Daten des Arrays und nach den 100 durchläufen wieder leeren
          unset($testArray); // oder $testArray = null;
     }
}

is jetzt nur auf die schnelle so hingeschrieben...
 
Zuletzt bearbeitet:
Ja genau so dachte ich mir das auch.

Aber das nützt (zumindest mir) nichts.

Denn in meinem Skript arbeite ich ja mit "$testArray" weiter. Also ich schreibe es z.B. in eine Text-Datei.
 
Sobald das komplette Array verarbeitet ist, und danach noch nennenswerter Codeteil kommt, kannst du es doch per unset löschen. Wenn das SCript danach ohnehin (so gut wie) zuende ist, kann man sich das dann auch sparen ;)
 
Zurück