ERLEDIGT
NEIN
NEIN
ANTWORTEN
26
26
ZUGRIFFE
2169
2169
EMPFEHLEN
-
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?
Hoffe ihr könnt mir helfen, Danke em3LPHP-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];
}
}
-
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?
-
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
-
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...
-
17.04.07 18:32 #6
- Registriert seit
- Apr 2007
- Ort
- Hildesheim (Niedersachsen)
- Beiträge
- 51
Hast du jeden Soldaten da einzelnd animiert oder wie schaffst du das Kunststück 4 Megabytes zu verbraten ?exhausted (tried to allocate 4194304 bytes) in.....".
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)
-
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?
-
Was genau macht denn das Skript bis zu diesem for-Konstrukt?
Markus Wulftange
-
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.
-
Achso, hmm also ich habe auf jedenfall "viele" FOR und WHILE schleifen eingebaut!
könnte es vtl. daran liegen?
-
21.04.07 13:46 #12
- 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.
-
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
-
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?
Vielen Dank im VorrausPHP-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];
}
}
-
06.05.07 13:43 #15
Soweit ich weiß, gibt es bei For keine "or" Angabe.
Diese musst du per "," trennen.
Siehe auch hierKIDS 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
-
Bilder Upload (Allowed Memory Size...) Fehler
Von MC-René im Forum PHPAntworten: 3Letzter Beitrag: 01.03.07, 13:26 -
Allowed memory size
Von Spranta im Forum PHPAntworten: 2Letzter Beitrag: 21.09.06, 16:06 -
allowed memory size exhausted
Von fercules im Forum PHPAntworten: 1Letzter Beitrag: 30.08.05, 18:38 -
Beim erzeugen von TN: Fatal error: Allowed memory size of 8388608 bytes exhausted
Von GarGod im Forum PHPAntworten: 1Letzter Beitrag: 08.08.05, 16:21 -
allowed memory size
Von joky_joky im Forum PHPAntworten: 15Letzter Beitrag: 07.02.05, 15:13





Zitieren


Login






[PHP][Snippet] Array zu XML konvertieren