JulianBaumueller: Allowed memory size of 67108864 bytes exhausted

Hallo,

wenn ich ne Datei per include eingebunden hab und auf die Seite zugreifen will, kommt die Fehlermeldung:

Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 7680 bytes) in /users/xxx/www/xxx/seiten/include/forum/forum.php on line 9

Ich weiß bei Google gibts viele solche Sachen aber bei is das komische, dass ich schon andere Dateien eingebunden hab, die wesentlich Größer waren und da kam die Meldung auch nicht. Sprich ich seh des zum ersten Mal..

Mit freundlichen Grüßen,
JulianBaumueller

  1. Hi,

    wenn ich ne Datei per include eingebunden hab und auf die Seite zugreifen will, kommt die Fehlermeldung:
    Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 7680 bytes) in /users/xxx/www/xxx/seiten/include/forum/forum.php on line 9

    ja, das Script will mehr Arbeitsspeicher als es bekommt.
    Hast du da vielleicht aufwendige Bildmanipulationen oder so? Die gd-Lib ist bekannt dafür, dass sie zum Bearbeiten eines Bildes ein Mehrfaches der *unkomprimierten* Bilddaten braucht.

    Ich weiß bei Google gibts viele solche Sachen aber bei is das komische, dass ich schon andere Dateien eingebunden hab, die wesentlich Größer waren und da kam die Meldung auch nicht.

    Ja und? Die Größe eines Scripts hat ja auch nichts mit seinem Arbeitsspeicherbedarf zu tun.

    Sprich ich seh des zum ersten Mal..

    Schön. Und was ist nun deine Frage?

    Ciao,
     Martin

    --
    Die letzten Worte des Privatdetektivs:
    Jetzt wird es mir klar: SIE sind der Mörder!
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
    1. ja, das Script will mehr Arbeitsspeicher als es bekommt.
      Hast du da vielleicht aufwendige Bildmanipulationen oder so? Die gd-Lib ist bekannt dafür, dass sie zum Bearbeiten eines Bildes ein Mehrfaches der *unkomprimierten* Bilddaten braucht.

      Bei fehlerhaften JPGs wächst der Speicherbedarf ebenfalls exorbitant, auch wenn das unkomprimierte Bild eigentlich winzig ist.

      1. Hallo,

        also nein ich habe da keine 'fehlerhaften JPG's' drauf und betreibe auch kein Direcotry-Listening.
        Des Forum besteht 'bis jetzt'=noch nicht fertig, aus vielleicht 10 dateien, die in Drei ordnern gespeichert sind.

        Und wie gesagt keine von denen ist Größer als 4 KB.

        MfG,
        JulianBaumueller

        1. Hello,

          Des Forum besteht 'bis jetzt'=noch nicht fertig, aus vielleicht 10 dateien, die in Drei ordnern gespeichert sind.

          Und funktioniert es ohne die Einbindung in die Umgebung, also z.B. in einer eigens dafür gebauten Testumgebung?

          Ist es so, dass das Include alleine noch keinen Fehler auslöst, sondern erst der Zugriff auf eine der eingebundenen Funktionen? Hat vielleicht eine der Funktionen eine eingebaute Endlosschleife?

          Liebe Grüße aus dem schönen Oberharz

          Tom vom Berg

          --
           ☻_
          /▌
          / \ Nur selber lernen macht schlau
          http://bergpost.annerschbarrich.de
          1. Hallo,

            also die Meldung kommt, wenn ich auf die Seite/Datei zugreife, inder die Datei eingebunden ist.

            Nein, schleifen verwenden ich generell nicht.. (Da reicht dass PHP noch nicht..)

            Mit freundlichen Grüßen,
            JulianBaumueller.

            1. Hello,

              also die Meldung kommt, wenn ich auf die Seite/Datei zugreife, inder die Datei eingebunden ist.

              Nein, schleifen verwenden ich generell nicht.. (Da reicht dass PHP noch nicht..)

              Na, dann solltest Du Deinen Code mal irgendwo als Textdatei offenlegen, gut dokumentiert versteht sich. Dann können nwir Dir vielleicht trotzdem helfen.

              Liebe Grüße aus dem schönen Oberharz

              Tom vom Berg

              --
               ☻_
              /▌
              / \ Nur selber lernen macht schlau
              http://bergpost.annerschbarrich.de
              1. Ohh, was für ein depp ich bin..

                also hat sich erledigt ich hab vor lauter dateien umbenennen ausversehen die datei in sich selbst includet.. :D

                forum.php:

                  
                $kategorie = $_GET['kategorie'];  
                  
                switch($kategorie) {  
                default:  
                include("seiten/include/forum/forum.php");  
                break;  
                }  
                
                

                Also trotzdem danke für alles..

                Vor lauter nicht mehr weiter wissen komm ich immer spät abends von alleine aufs Problem.

                MfG,
                JulianBaumueller

                1. also hat sich erledigt ich hab vor lauter dateien umbenennen ausversehen die datei in sich selbst includet.. :D

                  Also doch eine Endlosschleife.

                  forum.php:
                  [code lang=php]
                  $kategorie = $_GET['kategorie'];

                  Das unnötige umreferenzieren kannst du dir sparen, du kannst $_GET direkt in der switch-Anweisung verwenden.

                  1. Hi!

                    $kategorie = $_GET['kategorie'];
                    Das unnötige umreferenzieren kannst du dir sparen, du kannst $_GET direkt in der switch-Anweisung verwenden.

                    Du kannst hier ruhig von Kopieren sprechen. Dass PHP intern solange eine Art Referenz verwendet, bis eine der beiden Variablen einen neuen Wert zugewiesen bekommt, ist zwar ein interessantes internes Implementierungsdetail, aber wenn du das nicht mit dazusagst, verwirrst du mit dem Begriff Referenz nur, denn es gibt ja auch die echten Referenzen.

                    Lo!

                    1. $kategorie = $_GET['kategorie'];
                      Das unnötige umreferenzieren kannst du dir sparen, du kannst $_GET direkt in der switch-Anweisung verwenden.

                      Du kannst hier ruhig von Kopieren sprechen. Dass PHP intern solange eine Art Referenz verwendet, bis eine der beiden Variablen einen neuen Wert zugewiesen bekommt, ist zwar ein interessantes internes Implementierungsdetail, aber wenn du das nicht mit dazusagst, verwirrst du mit dem Begriff Referenz nur, denn es gibt ja auch die echten Referenzen.

                      Du hast natürlich recht.

                      Und der Vollständigkeithalber - eine echte Referenz wäre das hier.

                        
                      $kategorie = &$_GET['kategorie']; // die für mich schlüssigere schreibweise  
                      $kategorie =& $_GET['kategorie'];  
                      
                      

                      Wenn $_GET['kategorie'] manipuliert wird, ändert sich $kategorie ebenfalls.

                      Dabei ist es übrigens egal

                      1. Hello,

                        Und der Vollständigkeithalber - eine echte Referenz wäre das hier.

                        $kategorie = &$_GET['kategorie']; // die für mich schlüssigere schreibweise
                        $kategorie =& $_GET['kategorie'];

                        
                        >   
                        > Wenn `$_GET['kategorie']`{:.language-php} manipuliert wird, ändert sich `$kategorie`{:.language-php} ebenfalls.  
                        >   
                        > Dabei ist es übrigens egal  
                          
                          
                        \*ups\* Hast Du jetzt das Orginal nicht fertig geschrieben, oder an der referenz manipuliert? :-))  
                          
                          
                          
                          
                          
                          
                          
                        Liebe Grüße aus dem schönen Oberharz  
                          
                          
                        Tom vom Berg  
                        ![](http://selfhtml.bitworks.de/Virencheck.gif)  
                          
                        
                        -- 
                         ☻\_  
                        /▌  
                        / \ Nur selber lernen macht schlau  
                        <http://bergpost.annerschbarrich.de>
                        
                  2. Das unnötige umreferenzieren kannst du dir sparen, du kannst $_GET direkt in der switch-Anweisung verwenden.

                    Ich könnte mir vorstellen, dass zwischen der Zuweisung und dem switch-Block (der in der jetzigen Form ja auch wegrationalisiert werden könnte ;-)) noch weitere Logik integriert werden soll (z.B. Authentifizierung), wodurch die Variable $kategorie geändert wird. Man könnte zwar auch die $_GET-Superglobal modifizieren, aber evtl. möchte man den Originalwert beibehalten.

    2. Haha..

      also wenn ich schon aufwendig hör.. :D:D
      das Forum is dass einfachste waste kriegen kannst und hab ich selbst gemacht..

      Und eine datei davon hat niemals mehr als 2-3 KB

      Was ein zirkulärer Verlauf ist, darüber müsstet ihr mich mal informieren..

      Vielen Dank

      MfG
      JulianBaumueller

      1. Hello,

        Was ein zirkulärer Verlauf ist, darüber müsstet ihr mich mal informieren..

        Eine Art von "Ping-Pong-Rekursion" zwischen Client und Server.

        Sowas entsteht z.B. gerne beim Scannen von Verzeichnissen (Directory Listing), wenn im Directory ein Link auf eine höhere Ebene enthalten ist.

        Betreibst Du in Deinem Forum Directory-Listing?

        Liebe Grüße aus dem schönen Oberharz

        Tom vom Berg

        --
         ☻_
        /▌
        / \ Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de
  2. Hello Julian,

    wenn ich ne Datei per include eingebunden hab und auf die Seite zugreifen will, kommt die Fehlermeldung:

    Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 7680 bytes) in /users/xxx/www/xxx/seiten/include/forum/forum.php on line 9

    Ich weiß bei Google gibts viele solche Sachen aber bei is das komische, dass ich schon andere Dateien eingebunden hab, die wesentlich Größer waren und da kam die Meldung auch nicht. Sprich ich seh des zum ersten Mal..

    Ohne dieses Forum zu kennen, kann man nicht viel dazu sagen.
    Vielleicht hast Du Dir einen zirkulären Verlauf gebaut?

    64MB für ein Forumsscript und ein paar Datenbankpuffer ist nämlich schon ganz schön happig. Das benötigt man sonst meistens nur bei Bildbearbeitung. Oder arbeitet das Forum mit serialisierten Arrays und die Files sind schon mächtig voll?

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de