• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Script bricht einfach ab *wein*

  • Ersteller Ersteller Bastian Born
  • Erstellt am Erstellt am
Status
Für weitere Antworten geschlossen.
B

Bastian Born

Guest
Hallo,
ich habe ein problem!
Ich hab ein script geschrieben was eigentlich aus einer log datei informationen rausholen soll, dann richtig formnatieren soll dann noch etwas berechnen muss und dann in ne datenbank reinstopfen soll!

mein problem ist das dass programm nicht alles in die datenbank schreibt!
es müssten ca. 126000 einträge sein, er speichert aber nur die ersten 7000 ab!

Hier ist der code:
PHP:
<?php
include('mysql.php');
function new_coord($x,$y) 
   { 
    $x = (string) (($x + 250) / 0.5); 
    $y = (string) (($y + 250) / 0.5); 
     
    if($x < 0 || $y < 0) { 
        return false; 
    } 
     
    return array('con' => substr($y, 0, 1).substr($x, 0, 1), 'sec' => substr($y, 1, 1).substr($x, 1, 1), 'sub' => substr($y, 2, 1) / 2 * 5 + substr($x, 2, 1) / 2); 
   } 

$lines = file('http://ds4.die-staemme.de/map/village.txt.gz');
if(!is_array($lines)) die("Datei konnte nicht geöffnet werden"); 
foreach($lines as $line) {
	list($id, $name,$x, $y, $player, $points, $rank) = explode(',', $line);
	$name = urldecode($name);
	$name = addslashes($name);


$koo = new_coord($x,$y);
$con = $koo[con];
$sec = $koo[sec];
$sub = $koo[sub];
	mysql_query("INSERT INTO village SET id='$id', name='$name', con='$con', sec='$sec', sub='$sub',
		player='$player', points='$points', rank='$rank'");
}   
?>

Könnt ihr mir helfen??
wäre echt nett von euch!


Bastian
 
kann es sein das die maximake zeit für deine scriptausführung zu kurz ist?
es gibt da so ne begränzung wie lange ein script höchstens dauern darf.

Das kann man in der phpinfo sehen
 
Frank schrieb:
kann es sein das die maximake zeit für deine scriptausführung zu kurz ist?
Sollte es daran liegen, so baue ein refresh ein. Schau dir das vielleicht mal hier ab. Da wird das ähnlich gelöst.

Grüße, Ben.
 
cool
kannst du mir dann den link zu php.net von refresh geben?? gibts nämlich garnicht!

oder sag mir wie refresh geht!
 
Aso, ne .. da hast du mich missverstanden. :-)
Ich meinte ein Neuladen des Skripts.

Also bestimmst, wie viele Datensätze du in die Datenbank eintragen musst. Dann gibst du eine Anzahl an, die in einem Durchlauf bearbeitet werden soll, z.B. 1000 oder so (das ist ja jetzt mal gerade egal). Du lädst die Daten, die du für die SQL-Anweisungen brauchst in ein Array und lässt dieses in einer Schleife von 0 bis n (n = Anzahl der INSERTs pro Durchlauf) durchlaufen. Nach Beendigung der Schleife kannst du ja ein <meta http-equiv="refresh" .. /> ausgeben. Wenn das Skript also fertig ist wird ja der HTML-Code ausgeführt, was dann ein "refresh" der Seite nach sich zieht.

Wichtig ist nur, dass du bei diesem "refresh" die gleiche Seite immer erneut aufrufst, aber jedes Mal den Startindex für den nächsten Durchlauf (also n * h, mit h = Nummer des Durchlaufs) als URL-Parameter mitgibst.
Diesen Parameter wertest du dann jeweils vor der Schleife aus und bestimmst so, welche SQL-Queries du an die Datenbank schicken sollst.

Verständlich erklärt?
Teste es mal aus.

Grüße, Ben.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben