Mailinglisten-Archive |
Hallo Thomas, Thomas Winter wrote: > Ich benutze die mySQL-class (ich glaube phplib). Benutze ich auch. Kann damit keine Probleme bestätigen. > Mit jedem query wird auch ein $this->connect() gemacht. Daher habe ich > mysql.allow_persistent auch schon auf ON gestellt. Wird bei einigen Providern gar nicht mehr angeboten und wohl auch nicht mehr empfohlen. Begründen kann ich es grad nicht konkret, aber es hatte wohl etwas damit zu tun, dass die Persistenz auf eine gewisse Anzahl von Queries limitiert war und wenn gerade mitten in einer Verbindung diese Anzahl erreicht war, gabs quasi einen Reconnect zur DB und dabei entstanden die Probleme. > Ich lese die Textdatei mit fopen($datei,'r'), dann ein while, ein > explode mit \n, dann ein explode für die Felder der Zeile mit ',' und > ich erhalte ein Array mit 5 Elementen. Klingt nach einer CSV Formatierung dieser Daten. Hast du dir schon die Funktion fgetcsv() angesehen? Damit kannst du schön zeilenweise deine Datei einlesen. > Dann prüfe ich auf doppelte Datensätze mit einem query. Da ich bereits > mehrmals abgebrochen haben muss ich erst mal 50000 Datensätze nur > prüfen und nicht schreiben. Prüfst du zeileweise die Datensätze aus deiner Datei gegen die bisherigen Einträge in der DB? Oder prüfst du gleichzeitig alle aus der Datei geholten Zeilen gegen die DB ab? Wieviele Zeilen sind das in einer Query? Wie lang ist die Query? > Was ist da denn so langsam, ist explode so kompliziert oder liegt es > dem mySQL SELECT. Die Felder sind nicht indiziert, aber selbst als es > nur einige Hundert Datensätze in der Datenbank waren fand ich es > nicht signifikant schneller. INDICES sind unbedingt entscheidend. Setze über Spalten, die in JOINS oder WHERE Klauseln häufig verwendet werden unbedingt einen INDEX. Das beschleunigt MySQL ungemein. Ansonsten bleibt dir nur ein Profiling deines Scriptes. Setze an vermuteten zeitkritischen Stellen mit dem Debugger in deiner IDE Marken zum Messen der Laufzeiten. Oder schreibe dir ein kleines Script selbst, das so etwas kann. Dann wirst du einschränken können, wo es in deinem Script wirklich klemmt. regards, Ringo
php::bar PHP Wiki - Listenarchive