tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
NEIN
ANTWORTEN
26
ZUGRIFFE
2169
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von em3L
    em3L em3L ist offline Mitglied Silber
    Registriert seit
    Apr 2007
    Ort
    Remshalden (BW)
    Beiträge
    79
    Tagchen
    Also folgendes Problem wenn ich mein kleines Script aufrufe: "Fatal error: Allowed memory size of 50331648 bytes exhausted (tried to allocate 4194304 bytes) in.....".
    Nun dass bedeutet schließlich das dass Script zu groß sei, was aber eigentlich nicht sein kann, da dass Script vom Text her ziemlich kurz/klein ist, also kann es nicht Groß in der Göße der Scripts sein sondern Groß im Script (wegen Fehlern) selber sein!
    Nun tritt der Fehler im folgendem Script in der Linie 3 auf, was daraus schließen lässt dass eventuell die FOR-schleife davor was damit zu tun hat also dass sie z.B. unendlich ist.
    Nur weis ich nicht woran es liegen könnte?
    PHP-Code:
                $x 0;
                for (
    $i 0$i $anzahl_einheiten or $x <= $gegner_angriffspunkte$i++) {
                    if (
    $abzug_einheit_db[$i] < 1) {
                        
    $einheit_now[$i] = $einheit_db[$i];
                    }
                    else {
                        
    $einheit_now[$i] = $einheit_db[$i] - 1;
                        
    $x $x $einheit_angriff[$i];
                    }
                }
                for (
    $i 0$i $anzahl_fahrzeuge or $x <= $gegner_angriffspunkte$i++) {
                    if (
    $abzug_fahrzeug_db[$i] < 0) {
                        
    $fahrzeug_now[$i] = $fahrzeug_db[$i];
                    }
                    else {
                        
    $fahrzeug_now[$i] = $fahrzeug_db[$i] - 1;
                        
    $x $x $fahrzeug_angriff[$i];
                    }
                } 
    Hoffe ihr könnt mir helfen, Danke em3L
     

  2. #2
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Das lässt sich schwer sagen, wenn man nicht weiss, was sich hinter den einzelnen Werten verbirgt.
    Lass dir diese zur Kontrolle doch mal innerhalb der Schleife bei jedem Durchlauf flushen, dadurch lässt sich vielleicht leichter herausfinden, wo etwas nicht wie gewünscht passiert.
     

  3. #3
    Avatar von em3L
    em3L em3L ist offline Mitglied Silber
    Registriert seit
    Apr 2007
    Ort
    Remshalden (BW)
    Beiträge
    79
    flsuhen = ausgeben/echo?
    Hmm gute idee hab ich auch mal gemacht aber ging nicht, 1 Zeile dann kam der Fatal Error und dass Script ist abgebrochen...
    Weis jemand weiter?
     

  4. #4
    ScoRpleX ScoRpleX ist offline Mitglied
    Registriert seit
    Mar 2004
    Beiträge
    15
    Zitat Zitat von em3L Beitrag anzeigen
    Nun dass bedeutet schließlich das dass Script zu groß sei, was aber eigentlich nicht sein kann, da dass Script vom Text her ziemlich kurz/klein ist, also kann es nicht Groß in der Göße der Scripts sein sondern Groß im Script (wegen Fehlern) selber sein!
    Das ist nicht ganz richtig!

    Der Fehler sagt dir lediglich, dass dem Script nicht genügend Speicher zur Verfügung steht, um es komplett auszuführen (Arbeitsspeicher)!

    Der fehler wird vermutlich relativ simpel sein => die for() Schleife erzeugt eine Endlos Schleife oder eine sehr große Schleife was vermutlich an der or Bedingung innerhalb der Schleife liegt.

    Um den genauen Grund herauszufinden, müsste man mal den logischen Ablauf des Skripts nachvollziehen können ... wissen welche Daten sich hinter den Variablen verstecken!

    Liebe Grüße, ScoRpleX
     

  5. #5
    Avatar von em3L
    em3L em3L ist offline Mitglied Silber
    Registriert seit
    Apr 2007
    Ort
    Remshalden (BW)
    Beiträge
    79
    Zitat Zitat von ScoRpleX Beitrag anzeigen
    Um den genauen Grund herauszufinden, müsste man mal den logischen Ablauf des Skripts nachvollziehen können ... wissen welche Daten sich hinter den Variablen verstecken!
    Hmm also alle variablen enthalten nur zahlen die maximal bis 3 stellen gehen! Dass wars.
    Aber ich muss dazusagen dass ich eine seeehr große settingsdatei habe die immer geladen wird welche jedoch auch nur um die 6kbs groß ist.
    Also ich meine auch dass es eine endlosschleife ist aber wie genau...
     

  6. #6
    rexxitall rexxitall ist offline Mitglied Silber
    Registriert seit
    Apr 2007
    Ort
    Hildesheim (Niedersachsen)
    Beiträge
    51
    exhausted (tried to allocate 4194304 bytes) in.....".
    Hast du jeden Soldaten da einzelnd animiert oder wie schaffst du das Kunststück 4 Megabytes zu verbraten ?
    Das Script muss nicht unbedingt deswegen an der Schleife aussteigen weil es DORT die 4 MB Grenze erzeugt, sondern weil da vielleicht zufälligerweise das Gesamtscript 4 MB terminiert hat.

    Überdenke vielleicht einmal dein GameKonzept, sowas lief seinerzeit schon auf nem C64 mit 35 Kilobyte Ram
     
    Any sufficiently advanced technology
    is indistinguishable from magic.
    (A. C. Clarke)

  7. #7
    Avatar von em3L
    em3L em3L ist offline Mitglied Silber
    Registriert seit
    Apr 2007
    Ort
    Remshalden (BW)
    Beiträge
    79
    Hmm dass könnte wegen der "gamesettings.php" sein denn dort sind sämtliche variablen der einheiten mit jeweils Angriff, Verteidigung etc. dass sind schon ein haufen aber schließlich ist diese datei gerademal 10kb oder so und dann halt noch die datei in der die FOR schleife ist welche auch nur so um die 5kb hat dass ergibt ja dann schließlich ca. 15kb!? Also nicht 4MB.
    Ich hab keine Anhung wie ich dass machen soll? Denn hab schon ziemlich viel gemacht und umcoden will ich dass alles jetzt nicht mehr!
    Weis wer vtl. noch was?
     

  8. #8
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Was genau macht denn das Skript bis zu diesem for-Konstrukt?
     
    Markus Wulftange

  9. #9
    Avatar von em3L
    em3L em3L ist offline Mitglied Silber
    Registriert seit
    Apr 2007
    Ort
    Remshalden (BW)
    Beiträge
    79
    Hmm also eigentlich nur wie gesagt die vielen Variablen aus der DB und welche die in der Datei erstellt werden, dann sind da noch Scripts darüber welche zum berrechnen der Ressourcen und der Bauzeit von Einheiten, Gebäuden etc. zuständig sind.
    Und dann kommt dieses Script. Dass wars!
    Ich weis echt nicht mehr wie ich es sonst machen sollte...
     

  10. #10
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Ums nochmal anzumerken...es geht hier nicht um die Dateigrösse der verwendeten Skripte...es geht darum, wieviel RAM diese Skripte für die Verrichtung ihrer Arbeit in Anspruch nehmen.
     

  11. #11
    Avatar von em3L
    em3L em3L ist offline Mitglied Silber
    Registriert seit
    Apr 2007
    Ort
    Remshalden (BW)
    Beiträge
    79
    Achso, hmm also ich habe auf jedenfall "viele" FOR und WHILE schleifen eingebaut!
    könnte es vtl. daran liegen?
     

  12. #12
    rotzlöffeli rotzlöffeli ist offline Mitglied Gold
    Registriert seit
    Apr 2007
    Beiträge
    138
    Muss es nicht, es könnte auch ein Bug sein:
    http://bugs.php.net/bug.php?id=27598

    Um die Schwachstelle zu finden, müsste man den kompletten Code sehen.
     

  13. #13
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Zu massivem Arbeitspeicherbedarf kommt es eigentlich nur bei speicherintensiven Prozessen wie der Verarbeitung von Grafiken oder großen Datenmengen wie etwa großen Dateien, besonders wenn die verwendeten Ressourcen nachher nicht wieder freigegeben werden. Auch ein nachlässiger Umgang mit Variablen (unnötiges Dupluzieren von Variablenwerten, Einführen unnötiger, einmalig verwendeter temporärer Variablen) kann dazu führen.
     
    Markus Wulftange

  14. #14
    Avatar von em3L
    em3L em3L ist offline Mitglied Silber
    Registriert seit
    Apr 2007
    Ort
    Remshalden (BW)
    Beiträge
    79
    Sorry dass ich erst so spät wieder B schreib aber ich bekomm dass Problem leider nicht gelößt.
    Ich weis echt nichtmehr was ich machen soll. Desweiter hatte ich bei dem Hoster angefragt ob sie die Grenze erhöhen könnten, jedoch ist diese ja schon bei 48MB und kann somit nicht erhöt werden, schließlich denke ich nicht dass ich mehr als 48 MB verbrate? Dass kann doch nicht sein!
    Was heißt der Fehler überhaupt? Dass ich 4MB mehr als die Grenze benötige oder?
    Hat dass folgende Script vtl. ein Leak?
    PHP-Code:
                for ($i 0$i $anzahl_einheiten or $x <= $gegner_angriffspunkte$i++) {
                    if (
    $abzug_einheit_db[$i] < 1) {
                        
    $einheit_now[$i] = $einheit_db[$i];
                    }
                    else {
                        
    $einheit_now[$i] = $einheit_db[$i] - 1;
                        
    $x $x $einheit_angriff[$i];
                    }
                } 
    Vielen Dank im Vorraus
     

  15. #15
    Avatar von Flex
    Flex Flex ist offline (aka Felix Jacobi)
    tutorials.de Moderator
    Registriert seit
    Nov 2001
    Ort
    Wuppertal
    Beiträge
    5.295
    Blog-Einträge
    65
    Soweit ich weiß, gibt es bei For keine "or" Angabe.

    Diese musst du per "," trennen.

    Siehe auch hier
     
    KIDS Kinderbetreuungsdienst
    Xing

    "When you play the game of thrones, you win or you die. There is no middle ground."
    by Cersei Lannister in "A Game Of Thrones"

Ähnliche Themen

  1. Antworten: 3
    Letzter Beitrag: 01.03.07, 13:26
  2. Allowed memory size
    Von Spranta im Forum PHP
    Antworten: 2
    Letzter Beitrag: 21.09.06, 16:06
  3. allowed memory size exhausted
    Von fercules im Forum PHP
    Antworten: 1
    Letzter Beitrag: 30.08.05, 18:38
  4. Antworten: 1
    Letzter Beitrag: 08.08.05, 16:21
  5. allowed memory size
    Von joky_joky im Forum PHP
    Antworten: 15
    Letzter Beitrag: 07.02.05, 15:13