Fatal error: Allowed memory...

Achso, hmm also ich habe auf jedenfall "viele" FOR und WHILE schleifen eingebaut!
könnte es vtl. daran liegen?
 
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.
 
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:
			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 :D
 
Soweit ich weiß, gibt es bei For keine "or" Angabe.

Diese musst du per "," trennen.

Siehe auch hier
 
Doch diese ist definiert. ($x = 0;)
Ach und wegen dem Komma anstatt dem OR, es hat sich nichts verändert vtl. geht beides aber ich habe mal das Komma gelassen.
Aber komisch ist dass der Fehler immer in markierter Linie ist, selbst wenn ich irgendein Murks davor schreib was viel speicher verbraucht kommt der Fehler immer in derselben Linie:
PHP:
			$x = 0;
			for ($i = 0; $i < $anzahl_einheiten; $i++) {
				$einheit_now[$i] = $einheit_db[$i];
			}
			for ($i = 0; $i < $anzahl_fahrzeuge; $i++) {
				$fahrzeug_now[$i] = $fahrzeug_db[$i];
			}
			
			for ($i = 0; $i < $anzahl_einheiten, $x <= $gegner_angriffspunkte; $i++) {
				if ($abzug_einheit_db[$i] < 1) {
					$einheit_now[$i] = $einheit_db[$i];//<<<<<<--------- DIE DA
				}
				else {
					$einheit_now[$i] = $einheit_db[$i] - 1;
					$x = $x + $einheit_angriff[$i];
				}
			}
			for ($i = 0; $i < $anzahl_fahrzeuge, $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];
				}
			}
Weis wer wieso?
 
PHP:
for ($i = 0; $i < $anzahl_einheiten; $i++) {
                $einheit_now[$i] = $einheit_db[$i];
            }
            for ($i = 0; $i < $anzahl_fahrzeuge; $i++) {
                $fahrzeug_now[$i] = $fahrzeug_db[$i];
            }

Was ist der Sinn dieses Konstrukts?

Die übertragst die beiden Arrays einfach in zwei andere.
Das geht so einfacher, ohne die zusätzliche Schleife:

PHP:
$einheit_now = $einheit_db;
$fahrzeug_now = $fahrzeug_db;

Den Rest müsste man testen, ob man es nicht auch anders machen kann, leider gehst du sehr sparsam mit Kommentaren um, bzw. dem Inhalt der Arrays, deshalb kann man da nur raten.
 
Hmmhast recht hab dass mal geändert, jedoch der selbe Fehler :(
Hier mal der aktuelle Script:
PHP:
			$x = 0;
			for ($i = 0; $i < $anzahl_einheiten; $i++) {
				$einheit_now[$i] = $einheit_db[$i];
			}
			for ($i = 0; $i < $anzahl_fahrzeuge; $i++) {
				$fahrzeug_now[$i] = $fahrzeug_db[$i];
			}
			
			for ($i = 0; $i < $anzahl_einheiten, $x <= $gegner_angriffspunkte; $i++) {
				if ($abzug_einheit_db[$i] > 0) {
					$einheit_now[$i] = $einheit_db[$i] - 1;
					$x = $x + $einheit_angriff[$i];
				}
			}
			for ($i = 0; $i < $anzahl_fahrzeuge, $x <= $gegner_angriffspunkte; $i++) {
				if ($abzug_fahrzeug_db[$i] > 0) {
					$fahrzeug_now[$i] = $fahrzeug_db[$i] - 1;
					$x = $x + $fahrzeug_angriff[$i];
				}
			}
So müsste es doch eig. stimmen?
Kann man vtl. so machen dass die Variablen nach Schleifenende wieder gelöscht werden? Also dass sie kein Speicherplatz mehr verbrauchen denn ich brauche die Vars nur um sie in eine DB einzutragen demnach könnte ich in jedem Durchlauf auch ein DB eintrag machen anstatt alle Vars zu speichern und nacheinander 1x in die Db einzutragen oder?

edit:
Soll ich euch vtl. den kompletten Script posten, doch der ist seeehr lange^^
 
Probier es mal mit [phpf]unset[/phpf] und vielleicht auch nützlich: [phpf]mysql_free_result[/phpf].
 
Zurück