Moin.
Vermutlich geht die meiste Zeit dadurch verloren, dass du bei jedem Schleifendurchlauf einen eigenen mysql_query() absetzt. Man könnte auch erst alle Werte in einem Array sammeln und die Datenbank auf einen Schlag aktualisieren.
Beispiel:
$values = array();
$log = array();
foreach(file($source, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES) as $line) {
$data = explode('|', $line);
if(count($data) != 4) {
$log[] = "illegal record $line";
continue;
}
// jede mail-Adresse wird maximal einmal hinzugefügt!
$values[strtolower($data[3])] = "('".
mysql_real_escape_string($data[0])."', '".
mysql_real_escape_string(str_replace(',', '', $data[1]))."', '".
mysql_real_escape_string(str_replace(',', '', $data[2]))."', '".
mysql_real_escape_string($data[3])."')";
}
$query = 'INSERT INTO '.DB_TABLE.' (title, firstname, lastname, email) VALUES '.
implode(', ', $values);
Christoph