Mailinglisten-Archive |
Hi Thomas, Zitat von Thomas Gigold: > >> Ich habe folgendes Problem und suche nach einer guten Lösung: > >> Ich habe ein Script, das aus einer Tabelle A knapp 1500 Einträge liest > >> (werden stetig mehr). Innerhalb der while-Schleife wird eine Datei > >> gelesen, diese mit einem in Tabelle B vorhandenen Eintrag > >> gegengeprüft. Gibt es eine Änderung wird der Inhalt der Datei in die > >> Tabelle B geschrieben. > > > > > > welche Rolle spielt dabei Tabelle A ? > > geht die While-Schleife über die Einträge der Tabelle A oder B ? > > Die while-Schleife läuft über die Einträge der Tabelle A, > dort liegen die Namen der Dateien. In Tabelle B liegen die > Inhalte der Dateien. > > > du könntest die UPDATE-Abfragen für die Tabelle B 'sammeln' und wenn du > > 50 oder so zusammen hast diese auf einmal abschicken > > Ich sehe gerade nicht den wirklichen zeitwerten Vorteil ... > Ich schaffe damit vielleicht ein paar Durchläufe mehr, aber > nicht die ganze Ladung; vor allem da die meiste Zeit > sicherlich das holen, "parsen" und Gegenchecken der > Dateiinhalte benötigt ... ich finde, das Schoene an dieser Liste sind die immer wieder sehr unterschiedlichen Loesungsansaetze. :-) Gerade das ist eigentlich besonders fruchtbar. In diesem Sinne fand ich Sebastians Ansatz, im Gegensatz zu mir ueberhaupt erst einmal die Logik zu hinterfragen und durch eine Optimierung der Logik auch die Laufzeit des Skripts zu senken, sehr gut. Vielleicht kann man den Ansatz von Sebastian ja in eine andere Richtung weiterdenken. Ich frage mich z.B., ob es wirklich immer noetig ist, sich alle Datensaetze zu schnappen und auf Aenderungen zu pruefen. Da Du jetzt schon 1.500 Datensaetze hast und die Anzahl der Datensaetze nach Deiner Aussage stetig zunimmt, wird das Ganze immer Schwerfaelliger und Unperformanter werden. D.h. die Loesung ist doch eigentlich, sich nur diejenigen Datensaetze zu schnappen, die sich seit der letzten Pruefung geaendert haben. Mittlerweile habe ich gelernt, dass man sowas in der Fachsprache als Delta bezeichnet... ;-) Das Delta kannst Du doch ermitteln, indem Du die Datensaetze bei einer Aenderung z.B. mit einem Zeitstempel versiehst, der den Aenderungszeitpunkt festhaelt. Ebenso waere eine separate Tabelle denkbar, in der Du Aenderungen festhaeltst. Die dort festgehaltenen Aenderungen arbeitet Dein Skript dann ab, setzt sie auf "Bearbeitet" und loescht anschliessend alle auf "Bearbeitet" gesetzten Datensaetze aus der Aenderungstabelle. Viele Gruesse Lutz
php::bar PHP Wiki - Listenarchive