php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Verarbeiten von 800.000 Dateien


 
btec
05-07-2011, 14:36 
 
Hallo zusammen,

vorab: ich bin nicht auf der Suche nach einem fertigen Script,
sondern nur nach einem Lösungsansatz. Vielen Dank vorab.

Ich versuche ein Rechnungsarchiv zu verwalten, in welchem sich
derzeit ungefähr 800.000 Dateien befinden. Dieses Archiv wird täglich
weiter befüllt und die Dateien innerhalb dieses Archivs dürfen nicht
verändert, verschoben, umbenannt etc. werden, da das Warenwirtschafts-
System diese Dateien sonst nicht mehr findet und/oder akzeptiert.

Die Namensgebung der Dateien erfolgt (leider) per Zufallsgenerator.
Zudem ist das Datum der Datei nicht ausschlaggebend, da die Dateien
bei Nachkalkulationen gelöscht und neu erstellt werden können.
Der Datei-Name bleibt in diesem Fall aber erhalten.

Ich will aber diese Dateien auswerten und deren Inhalt sowie
Auswertung in einer SQL Datenbank abspeichern. Somit muss
ich irgendwie diese Dateien "markieren" als verarbeitet damit
das Script (Cronjob, der immer 1000 Dateien auswertet) beim
nächsten Lauf diese Dateien überspringt.

Meine Ideen scheitern leider an der Menge der Dateien.

Wie würdet ihr an eine solche Datenmenge herangehen?

Danke im Voraus

Gruß
btec

 
AmicaNoctis
05-07-2011, 15:20 
 
Hallo,

ich würde das Verzeichnis einlesen und in eine Datenbank schreiben. Dort kannst du dann neben einer eindeutigen ID und dem Dateinamen (unique key) auch das Rechnungsdatum, Absender, Empfänger u. s. w. verwalten.

Die eigentliche Frage ist aber die: Sollte das WWS nicht geeignete Auswertungen mitbringen oder wenigstens eine Schnittstelle zum Zugriff darauf anbieten? Ich würde vorsichtshalber nochmal ins Handbuch des WWS gucken.

Gruß,

Amica

 
mainclain
05-07-2011, 15:24 
 
Warum an der Menge der Dateien?

Kannst doch einfach eine Datenbanktabelle machen, wo schon bearbeitete Datein drin stehen.
Dort speicherst du also nur den Namen + eventuell nen timestamp ab.

Diese überspringst du beim nächsten durchlauf.

Dann siehst du dir an, wieviele Datein du ungefähr in einem PHP-Script durchlauf durchbekommst. Solltest dich da ein wenig zurückhalten, wie ich finde, sodass ein durchlauf Max. 5 Sekunden dauern darf (Von Standart glaube ich 30?).

Wieviel Dateien du in einem Durchlauf schaffst, musst du mal austesten^^.
Danach läd er eine Seite, die, je nach dem z.B. über JS eine weiterleitung und einen Link hat. Nach x Sekunden läd er also die Seite neu. Diesmal werden die nächste X Datein abgearbeitet, bis das Script durch ist.


Edit: Ups hab das mit dem Cronjob überlesen. Naja aber da versteh ich ehrlich gesagt, noch weniger das Problem, da du doch eh mit Datenbank arbeitest?^^

 
h3ll
05-07-2011, 15:42 
 
Verarbeiten von 800.000 Dateien - PHP Forum: phpforum.de (http://phpforum.de/forum/showthread.php?t=263690)


Alle Zeitangaben in WEZ +2. Es ist jetzt 03:27 Uhr.