Fatal error: Allowed memory...

Ok ich hab es nun ma so proboert:
PHP:
			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];
						
						$einheitname = 'einheit'.$i;
						$SqlStringu = "UPDATE ga_player SET $einheitname = '$einheit_now[$i]' WHERE userid = '$game_userid'";
						$Ergebnisu = @mysql_query ($SqlStringu);
						
					mysql_free_result($Ergebnisu);
					unset($einheit_now[$i]);
				}
			}

Jedoch hat es dann seehr lange gedauert zu laden und ausserdem kamen dann zwei Fehler:

Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in /home/u0016453269/public_html/docs/marc/game/leisten_angaben.php on line 271

Fatal error: Maximum execution time of 30 seconds exceeded in /home/u0016453269/public_html/docs/marc/game/leisten_angaben.php on line 263

Dass erste entspricht: mysql_free_result($Ergebnisu);
und dass zweite: if ($abzug_einheit_db[$i] > 0) {

Hmm andscheinend funktioniert es so auch nicht :(
Langsam wirds echt kompliziert...
 
Bitte nicht das @ benutzen, um Fehlermeldungen zu unterdrücken. Das erschwert die Fehlersuche! Zu deinem Problem. Ich hatte mal ein ähnliches und bei mir war die "Lösung", dass ich einfach ein zu großes Array hatte. Wieviele Elemente besitzt denn dein $einheiten_now?
 
[phpf]mysql_free_result[/phpf] kann nicht für Updates benutzt werden, da diese auch kein Memory belegen. Es ist ausschließlich für SELECT Queries gedacht, die ja auch nach Benutzung sozusagen noch im Speicher sind.
 
elemente? Also was in der Variable steht? Da sind meistens nur kleinere Zahlen die in mySQL auf Integer(11) gesetzt sind so zwoschen 0 und 100. Mehr nicht.
So ich hab dann mal das @ weggelassen, jedoch sind immer noch die gleichen 2 Fehlermeldungen vorhanden. Aber von überlastung der Speichergrenze steht jetz nichts mehr drann mal sehen...
Weis wer noch was?

edit: Ok hab das free weggelassen, doch es lädt immer noch so lange :'(
Jedoch kommt jetzt nur noch der Fehler:
Fatal error: Maximum execution time of 30 seconds exceeded in /home/u0016453269/public_html/docs/marc/game/leisten_angaben.php on line 262
also die Linie: for ($i = 0; $i < $anzahl_einheiten, $x <= $gegner_angriffspunkte; $i++) {
 
Zuletzt bearbeitet:
Es dürfte ja jetzt nur noch eine Fehlermeldung sein, da du [phpf]mysql_free_result[/phpf] in dem Kontext nicht mehr benutzen kannst.

Weiterhin ist es gut, dass die Fehlermeldung mit dem Speicher weg ist, was darauf hinweist, dass zuviel Daten angesammelt wurden.

Jetzt sagt uns, dass die Schleife über 30 Sekunden braucht, was über die max_execution_time hinaus geht, sprich es könnte darauf hindeuten, dass es eine Endlosschleife ist.

Ist $anzahl_einheiten und $gegner_angriffspunkte wirklich gesetzt?
Und haben sie die richtigen Zahlen drin?

/Edit:

Immer diese Überschneidungen hier ;)
 
Hmm also anzahl_einheiten ist ganz sicher auf 6 gesetzt aber wenn du so Fragst ich hatte immer wieder probleme mit den gegner angriffspunkten ich glaube die sind auf 0 oder nichts!
Ich werde einfach schnell eine beliebige Zahl einsetzten!

edit: Hmm schade, immernoch der selbe Fehler und es lädt ewig :( Obwohl diesmal alle Variablen gesetzt sind!
Vtl. liegt dass doch an dem Komma?

edit2: Oh halt jetzt kommt die Fehlermeldung in dieser Liniie: if ($abzug_einheit_db[$i] > 0) {

Whaa mann ey ich glaub ich werd verrückt^^
 
Zuletzt bearbeitet:
Vielleicht sollte das Ganze noch einmal von vorne aufgerollt werden um gleich von Beginn an Unnötiges zu vermeiden: Was genau soll der Algorithmus machen und welche Daten stehen dafür zur Verfügung? Was sind also die Eingabe- und was die gewollten Ausgabedaten?
 
Zurück