Fatal error: Allowed memory...

em3L

Mitglied
Tagchen :D
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:
			$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
 
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.
 
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?
 
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
 
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...
 
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 ;)
 
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? :D
 
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...
 
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.
 
Zurück