Hallo,
ich möchte Nutzer meiner Seite eine MySQL-Datenbank füllen lassen.
Dies geschieht über eine Formular. Der Nutzer kann eine CSV-Datei auswählen und meine Software in PHP liest sie zeilenweise ein, wandelt sie für MySQL brauchbar um und fügt sie mit INSERTS ein. Dabei fasse ich immer hundert Zeilen in einen INSERT, also
$sql = ‚INSERT INTO tabelle
(einheit_A
, einheit_B
, einheit_C
, einheit_D
, einheit_E
, einheit_F
, einheit_G
) VALUES (‚a‘,‚b‘,‚c‘,‚d‘,‚e‘,‚f‘,‚g‘), (‚a‘,‚b‘,‚c‘,‚d‘,‚e‘,‚f‘,‚g‘), (‚a‘,‚b‘,‚c‘,‚d‘,‚e‘,‚f‘,‚g‘),
… 97 weitere…
, (‚a‘,‚b‘,‚c‘,‚d‘,‚e‘,‚f‘,‚g‘)‘;
Das Problem ist, daß PHP nach ca. 300 Einträgen in den Timeout geht(PowerWeb Perfect bei Strato).
Wie kann ich das Problem lösen? Ich will den Nutzer ja auch nicht ewig warten lassen ohne daß er etwas sieht.
Gründe für Rechenaufwand sind die internen Operationen (zum Beispiel wird ein Bild geladen, wenn es in der CSV-Datei als URL vorkommt, verkleinert und abgespeichert) und das Speichern in der Datenbank.
MySQL bietet da zwar für das Speichern in der Datenbank die Option an, eine Datei einzulesen aber wenn ich eine temporäre Datei erstelle, was passiert dann mit dieser, wenn 100 andere gleichzeitig den Dienst nutzen? Sie wird überschrieben.