Archiv verlassen und diese Seite im Standarddesign anzeigen : Probleme mit Dateizugriff???
DigitalDoener 22-12-2004, 23:58 Meine Frage ist eigentlich ziemlich Allgemein.
Problem ist, dass ich eine .txt datei habe welche in einer Stunde über 1.000 mal Aufgerufen werden soll.
Eigentlich wird auf die Textdatei mit einem Script bis zu 1.000 mal zugegriffen. Wahrscheinlich wird die Datei auch mehrere Zugriffe in gleichen Moment aushalten müssen.
Kann es in dieses Moment zu Performanceverlusten kommen( eventuell kann die Datei nicht geöffnet werden) oder wird diese dann vom Apache gepuffert.
Oder ist es doch lieber besser eine CVS zu benutzten?
Danke schon mal im voraus
penizillin 23-12-2004, 02:03 cvs ist immer noch nur eine datei - daher nicht wirklich besser.
gepuffert - je nach einstellungen, aber wenn sie auch wieder beschrieben wird - muss sie eh neugelesen werden, oder?
ansonsten kannst du dir ja noch flock() anschauen...
ne frage - wenn schon so viele besucher - ist denn das die einzige möglichkeit, daten abzulegen? wäre eine db nicht sinnvoller?
DigitalDoener 23-12-2004, 12:13 ja klar. Ich habe es auch gerade auf einer Datenbank. Läuft auch, allerdings arbeitet der SQL-Server schon ziemlich am Limit.
Ein zweiter Punkt wieso ich es mal mit einer Datei versuchen möchte liegt in der Geschwindigkeit. Es werden nämlich nur 30 Zeilen ausgelesen und in da ist eine Datei wesentlich schneller als eine MySQL-Datenbank.
Das waren meine ersten gedanken. Mit ist eigentlich jeder Gedanke lieb. Ich sammel erstmal Ideen und dann wird Programmiert.
penizillin 23-12-2004, 17:33 naja, 1000 aufrufe inner stunde ist eigentlich noch lange nicht viel...
wenn's nur eine datei ist, in ein text gespeichert ist und nur von dort aus aufgerufen wird, denke ich, wird's einen tick schneller als eine db sein können. wenn es strukturierte daten sind (und ich denke es sind welche, oder?), mit denen noch etwas gemacht wird, wird eine db aber schneller sein.
generell behaupte ich, dass eine richtig programmierte anwendung bei 1000 besuchern pro stunde problemlos laufen kann. selbstverständlich kann man aber auch ihre performance mit sachen wie mmcache verbessern.
werd konkreter, vielleicht geht's dann besser mit dem gedankensammeln, denn der ansatz ist schonmal richtig!
DigitalDoener 23-12-2004, 17:47 Es läuft Stündlich ein Cronjob an, welcher die 10 höchst Bewerteten Bilder ausliest und in Datei haut. Natürlich schön mit Tabulator dazwischen
fwrite($datei, "".$toppics[$i][picid]."\t".$toppics[$i][userid]."\t".$toppics[$i][pic]."\t".$toppics[$i][pro]."\r\n");
in der Datei stehen jetzt die Datensätze schön untereinander. Möchte jetzt ein User die TOP 10 sehen. Werden somit der Script alle einträge aus dein Datei gelesen und Strukturiert Dargestellt.
Ausgelesen werden die Datensätze aus der Datei per
fscanf();
Meine Bedenke gehen jetzt in die Richtung der Performance.
- Was passiert wenn der Cronjob gerade eine neue TOP10 erstellt und im gleichem Moment ein User die TOP10 sehen will. Damit hätte ich 1 Schreibprozess und 1 Leseprozess. Eigentlich sind 2 verschiedene Prozesse nur per CSV möglich welches ja genau für diesen Zwerk erfunden worden ist.
penizillin 23-12-2004, 18:04 ok - besser.. mein erster eindruck - auf jeden fall eine db benutzen.
genauer:
1. cronjob ist bei 1000 besuchern / std nicht immer nötig - oft reicht es, die startseite (oder die, wo alle besucher mind. 1 mal pro besuch auflaufen) mit dem code einer ähnlichen konstruktion versehen:letzte_aktualisierung_ermitteln(); //ob aus der db oder datei
if((ZEIT - LETZTE_AKTUALISIERUNG) > 1 STD) {
aktualisieren();
} oft kommt's auf diese abweichung von wenigen sekunden/minuten nicht an...
2. generell lässt sich bildergalerie-ranking einfacher aus der db einlesen (die hits werden schon dort gespeichert, fehlt nur noch die sortierung bei der ausgabe)
3. csv ist nur eine textdatei, afaik gibt es an ihr keine spezielle zugriffspufferung, in einer db dagegen doch.
4. eine bildergalerie auf der basis von textdateien ist imho zur trägheit und unsicherheit verurteilt.
DigitalDoener 23-12-2004, 18:13 deiner meinung nach sollte ich also z.B: ein HTML-Datei generieren und wenn die letzte Aktuallisierung der Datei x Stunden zurückliegt einfach die alte HTML-Datei aktualisieren und mit neuen Inalt bestücken
penizillin 23-12-2004, 18:15 nein. eigentlich gar keine datei - ich empfehle ausdrücklich eine db :)
wenn schon eine datei sein muss, dann kannst du sie erstellen, wie du willst - ob durch cronjob oder durch den ersten besucher einer neuen vollen stunde, der durch seinen aufruf der startseite die aktualisierung erzwingt, und direkt die frischen ergebnisse bekommt.
DigitalDoener 23-12-2004, 18:24 So kurz vor Weihnachten wird man immer träge :o
meine Hirnanhangsdrüse stellt sich gerade die Frage:
Nehmen wir an der User guck sich die TOP10 an. Die Daten wurde aus der Datenbank ausgelesen. Alles ok
bis jetzt:
Er kommt jetzt am nächsten Tag wieder und möchte natürlich die aktuellen TOP10 sehen. So, nun habe ich aber in dem aktuallisierungsintervall aber gesagt. Die Aktualliesierung soll nur alle 2 Tage stattfinden. Dann muss ich ja wieder aus der Datenbank lesen, weil ich ja z.B: keine Datei erstellt habe wo die alten Datei nochmal stehen.
Eigentlich war der Sinn der Datei, dass ich die Anzahl der Datenbankzugriffe runterschraube.
Original geschrieben von penizillin
cvs ist immer noch nur eine datei ...
CVS ist überhaupt keine Datei ... sondern ein Concurrent-Versioning-System ... csv ... das könnte 'ne Datei sein ... und die wäre dann auch nur 'ne Datei ... ;)
penizillin 23-12-2004, 18:42 goth hat natürlich recht
und ich trete dem club "cvs und csv? hauptsache "c", "s" und "v" in irgendeiner reihenfolge!" bei :)
DigitalDoener 23-12-2004, 18:48 Original geschrieben von goth
CVS ist überhaupt keine Datei ... sondern ein Concurrent-Versioning-System ... csv ... das könnte 'ne Datei sein ... und die wäre dann auch nur 'ne Datei ... ;)
Das war penizillin und mir auch klar und wieder versucht einer vom Thema abzukommen.
Es geht um eine generelle Frage. Was besser ist ein CVS oder eine Datei und diese Frage haben ich nicht generell gestellt sondern nur auf mein Problem...
War das erste was mir auch aufgefallen ist und trette dem Club auch bei. :rocks:
CVS, VCS, SCV,...... ist doch alles egal. Dann kann uns ja auch egal sein. Ob es eine Datei ist oder ein CVS
|