Fatal Error: Allowed memory size of 33554432 bytes exhausted

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

  • Fatal Error: Allowed memory size of 33554432 bytes exhausted

    So, hab es nun hinbekommen, wenn ich nun jedoch die Java-Slides via PHP generieren möchte, bekomme ich einen Fatal Error aufgrund ausgereiztem Temporärspeicher. Jedoch habe ich noch nicht wirklich viel Code und gerade einmal 5 MySQL-Abfragen (mit wenig Last!) in jeweiligen Funktionen untergebracht, wonach ich mir gut vorstellen kann in folgender Funktion einen Fehler zu haben, der die Fehlermeldung auslöst. Vielleicht könnte mal bitte jemand drüber schauen, denn ich find nix.

    PHP-Code:
    /* Stringinterne Backslashes zur Entwertung werden hier leider nicht richtig ausgewertet bzw. farblich übersetzt */
    function jsSlide($lang) {     
       
    $output '<script language="javascript" type="text/javascript">';
       
    $output .= 'window.addEvent(\'domready\', function() {' "\n";
       
    $servicesCountSel "SELECT position FROM page_services_" $lang " ORDER BY position DESC LIMIT 1";     
       
    $servicesCountSelRes mysql_query($servicesCountSel) or die(mysql_error());     
       
    $servicesCount mysql_fetch_row($servicesCountSelRes);     
       for (
    $i=1;$i<=$servicesCount;$i++) {         
          
    $output .= 'var myVerticalSlide' $i ' = new Fx.Slide(\'service' $i '_slide\');' "\n";         
          
    $output .= 'myVerticalSlide' $i '.hide();' "\n";         
          
    $output .= 'document.getElementById(\'service' $i '_slide\').style.display = \'block\';' "\n";         
          
    $output .= '$(\'slideService' $i '\').addEvent(\'click\', function(e){' "\n";         
          
    $output .= 'stop(e);' "\n";         
          
    $output .= 'myVerticalSlide' $i '.toggle();' "\n";         
          
    $output .= '});' "\n";     
       }     
       
    $output .= '});' "\n";     
       
    $output .= '</script>';     
       print 
    $output


    Die Funktion ist via include extern eingebunden.
    Mal noch eine sicher total bescheuerte Frage: Muss ich eine DB-Abfrage mit mysql_close() wieder schließen?
    Zuletzt geändert von KillUrMind; 26.08.2008, 18:59.

  • #2
    Sieht mir nach einer Endlosschleife aus. $servicesCount enthält ein Array und keinen Integer. Um die Anzahl der Einträge zu erhalten kannst du mysql_num_rows() verwenden. Macht aber auch nicht wirklich viel Sinn, da du ja mit LIMIT 1 eh auf max. 1 Eintrag limitierst. Es sei denn die Datenbank kann auch leer sein.

    Nachtrag: Was mir gerade noch auffällt: Du verwendest Hochkommata in deinem String der von Hochkommata umschlossen ist. Die musst du mit einem Backslash (\) maskieren, sonst kommt es nämlich gleich auch noch zu einem parse error.

    Nachtrag 2: Gerade das Kommentar in der ersten Codezeile gelesen, sorry
    Zuletzt geändert von matzeee; 26.08.2008, 19:02.

    Kommentar


    • #3
      Danke, das wars! Habe vergessen eine while-Schleife um die for-Schleife zu bauen und den Maximalwert in der for-Bedingung mit $servicesCount['position'] zu kennzeichnen.
      Kannst Du mir vielleicht auch was zu meiner Frage mit der MySQL-Beendigung sagen?

      Kommentar


      • #4
        Nach einer Abfrage nicht. Sonst musst du ja nach jeder Query die Datenbankverbindung wieder aufbauen. Du kannst aber mysql_free_result() verwenden, allerdings scheiden sich hier die Geister. Siehe hierzu auch die Kommentare auf php.net. Ich persönlich verzichte darauf.

        Kommentar


        • #5
          Okay, das habe ich bislang auch, jedoch aus Unwissenheit.

          Kommentar

          Lädt...
          X