Ankündigung

Einklappen
Keine Ankündigung bisher.

Generelle Frage zum Speicherverbrauch in PHP

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Generelle Frage zum Speicherverbrauch in PHP

    Hallo,
    Interessante Sache das mit der Interprozesskommunikation, muss ich schon sagen. Allerdings hab ich jetzt noch eine generelle Frage zur Speicherverwaltung unter PHP(4):
    PHP-Code:
    <?php
    $time 
    0;
    $message = array();

    while(
    $time 5) {
            
    $message['text'] = md5time() );
            
    $message['time'] = time();
            echo 
    "Speicher: " memory_get_usage() . "
    Array: " 
    $message['text'] . "

    "
    ;
            
    flush();
            
    sleep(2);
            
    $time ++;
            
    $neuevariable = array(md5(time()), md5(md5(uniqid(time()+$time))), 'asd');
            
    $mehrspeicher 'mehrspeicher' 2345;
    }
    ?>
    Ich hab hier mal eben ein Testscript zusammengewürfelt. Die Ausgabe sieht folgendermaßen aus:
    Speicher: 16584
    Array: 46e126c2f95379aa3ddb111c4d158c6d

    Speicher: 17200
    Array: 4807c79076b1bd6caf0dd10a62111223

    Speicher: 17416
    Array: 9f37448ba4fda8f6d15959ed84006151

    Speicher: 17416
    Array: f8dd3a32a0a215d9361c7be8b313901c

    Speicher: 17416
    Array: f2ea03d6f4cdbcf6158e1bdc42f006c0
    Interessant zu beobachten, warum nimmt der Speicherverbrauch am Anfang zu und lässt dann nach / bleibt gleich? Kann mir das jemand erklären?

  • #2
    Weil du die vorhandenen Variablen überschreibst und damit kein neuer Speicher benötigt wird?

    Code:
    $mehrspeicher = 'mehrspeicher' + 2345;
    Das bewirkt wohl auch nicht, was der Name suggeriert..


    Edit: Was bewirkt denn flush(). Ich habs zwar hier im Manual (http://de2.php.net/flush) gelesen, aber Sinn macht das doch nur bei einem ob_start() oder?

    Kommentar


    • #3
      Die Zeile soll auch nich das bewirken was sie "soll", das ist einfach nur Geschmarri zum Versuch des SPeicherverbrauches

      Flush() gibt die Ausgabe an den Browser, ich hab das Ding schonmal eingebaut gehabt, da aus dem Script noch etwas anderes entstehen wird..

      Kommentar


      • #4
        Flush() gibt die Ausgabe an den Browser
        Ja gut, das hab ich auch im Manual lesen können, aber mit echo/print landets doch eh schon beim Browser.

        Und den Speicherverbrauch find ich zumindest in seinen Tendenzen logisch.

        Kommentar


        • #5
          Ich auch, eigentilch hatte ich mir auch eine andere Frage ausgedacht, den Speicherverbrauch finde ich auch logisch - mein Beispiel war noch zu wenig ausgereift, theoretisch ist dieses Thema also sinnlos.. ^^ ..

          Kommentar


          • #6
            aber mit echo/print landets doch eh schon beim Browser.
            Oder eben erstmal im Puffer. Sonst wäre flush() ja eine ziemlich sehr eindeutig überflüssige Funktion, nich'?

            Zum Thema finde ich bei Zend jetzt nur http://www.zend.com/zend/art/ref-count.php ;
            Artikel, die die Resourcenverwaltung oder garbage collection genauer beschreiben, leider nicht

            Kommentar

            Lädt...
            X