Sprint
Erfahrenes Mitglied
Hallo zusammen,
ich habe hier ein Laufzeitproblem bei einem Script und keine Ahnung, wie sich das erklärt.
Folgendes Script kopiert Daten um und sortiert sie neu:
Es werden Personendaten aus dem Kundenstamm und aus der Geschäftsführertabelle genommen und zum Schluß wieder in die leere Tabelle geschrieben. Dabei geht es um rund 26000 Datensätze in der Kundentabelle und ca 11000 in der GF Tabelle.
Wenn ich das Script so laufenlasse, bricht es nach 5 Minuten mit einem Laufzeitfehler ab. Ich habe dann das Script verdreifacht und die Nummernbereiche in kleiner 60000, 60-70000 und größer 70000 einschränkt:
Wenn ich die drei Teile in einem Script nacheinander durchlaufen lasse, komme ich auf eine Gesamtlaufzeit von knapp über zwei Minuten. Und das verstehe ich nicht. Ist das ein Problem des Speichers? Hat da jemand eine Idee?
ich habe hier ein Laufzeitproblem bei einem Script und keine Ahnung, wie sich das erklärt.
Folgendes Script kopiert Daten um und sortiert sie neu:
PHP:
$sql="select kdnr, vorname, nachname, gebdat, gebort, ausweisnr, passnr, ablaufdatum, passablauf, dkpkz from kunden";
$erg=mysqli_query($mysqli,$sql);
$gf = array();
while($zeile = mysqli_fetch_array($erg, MYSQLI_ASSOC)){
$reihung = 1;
$gf[] = array('kdnr'=>$zeile['kdnr'], 'vorname'=>$zeile['vorname'], 'nachname'=>$zeile['nachname'], 'gebdat'=>$zeile['gebdat'], 'gebort'=>$zeile['gebort'], 'ausweisnr'=>$zeile['ausweisnr'],
'passnr'=>$zeile['passnr'], 'ablaufdatum'=>$zeile['ablaufdatum'], 'passablauf'=>$zeile['passablauf'], 'dkpkz'=>$zeile['dkpkz'], 'reihung'=>$reihung);
$sqli = "select * from gfs where kdnr = '".$zeile['kdnr']."'";
$ergi = mysqli_query($mysqli,$sqli);
while($zeilei = mysqli_fetch_array($ergi, MYSQLI_ASSOC)){
$reihung++;
$zeilei['reihung'] = $reihung;
$gf[] = $zeilei;
}
}
$sqli = "truncate gfs";
$senderi = mysqli_query($mysqli, $sqli);
reset($gf);
foreach ($gf as $g){
$sqli = "INSERT INTO gfs (kdnr, vorname, nachname, ausweis, ablauf, pass, passablauf, gebdat, gebort, dkpkz, reihung)
VALUES ('".$g['kdnr']."', '".$g['vorname']."', '".$g['nachname']."', '".$g['ausweisnr']."', '".$g['ablaufdatum']."', '".$g['passnr']."', '".$g['passablauf']."', '".$g['gebdat']."', '".$g['gebort']."', '".$g['dkpkz']."', '".$g['reihung']."');";
$senderi = mysqli_query($mysqli, $sqli);
}
Wenn ich das Script so laufenlasse, bricht es nach 5 Minuten mit einem Laufzeitfehler ab. Ich habe dann das Script verdreifacht und die Nummernbereiche in kleiner 60000, 60-70000 und größer 70000 einschränkt:
PHP:
$sql="select kdnr, vorname, nachname, gebdat, gebort, ausweisnr, passnr, ablaufdatum, passablauf, dkpkz from kunden where kdnr < 60000";
$sqli = "delete from gfs where kdnr between kdnr < 60000";