MySQL bietet da alles, was du brauchst: Link. Timestamps sind bei solchen Sachen natürlich fehl am Platz, da benutzt man einfach die Datumsfunktionen.
Hi
Ich hab ein kleines Problem. Damit ihr das gut versteht geht mal bitte auf www.airliners.net und schaut euch dort unter "Search" mal dem seine Statistiken an.
Wie um Himmels Willen macht man sowas?! Ich meine, da kann man Zeiträume von ganz kurz bis drei Jahre wählen und der zeigt einem immer die richtigen Statistiken an. Wie kann man das in PHP/MySQL umsetzen? Ich komm da einfach nicht dahinter?
http://www.exploreourplanet.net - Ladet eure schönsten Urlaubsbilder hoch!
MySQL bietet da alles, was du brauchst: Link. Timestamps sind bei solchen Sachen natürlich fehl am Platz, da benutzt man einfach die Datumsfunktionen.
hm ja das weiss ich schon. aber dann müsste man ja für jedes Bild eine Tabelle erstellen und alle Aufrufe des Bilder mit einem Timestamp versehen oder? Kann mir nicht vorstellen dass die das auch so machen,d as bräuchte doch viel zu lange Rechenzeit?
http://www.exploreourplanet.net - Ladet eure schönsten Urlaubsbilder hoch!
Keine Timestamps, Timestamps gehen nur bis 1970, jedes Foto hat eigenen Datensatz in der Tabelle. Und warum bräuchte das eine lange Rechenzeit? Du solltest wissen, daß MySQL eine Datenbank ist, die gewisse Optimierungen mit sich bringt...
ja schon. jedes foto hat seinen eigenen datensatz. sag ich ja auch nichts. Aber die Statistiken auf der Seite die ich erwähnte zeigt ja, welche Bilder vor 2 Wochen die beliebtesten waren und welche es vor 2 Jahren waren etc..wie sieht da die Tabellenstruktur deiner Meinung nach aus?
http://www.exploreourplanet.net - Ladet eure schönsten Urlaubsbilder hoch!
Das ist dann nichts anderes als Mathe, Jahresstatistik ausrechnen, Monatsstatistik ausrechnen... natürlich durchsuchen die nicht jedes mal alle Datensätze, sondern lagern die Anzahl irgendwo im Datensatz.
z.B.
Tabelle Monatsstatistik:
id_1; // am meisten besuchtes Bild zur Zeit
id_2; // auf der zweiten Stelle
id_3...
und wenn ich mich auf Seite 1256 befinde wird nur geprüft ob Besucherzahlen von 1256 nicht kleiner sind als id_1, 2, 3... je nach Monat kann dann eine beliebige Statistik erstellt werden, die auch irgendwo gespeichert wird. Beiträge in diesem Forum z.B. werden ja auch nicht jedes mal gezählt, sondern bei einem neuen Beitrag wird der Wert erhöht, beim Löschen dann -1.
Hi nochmal
Hm also dann machen die sagen wir jeden Monat ein Update wo sie alles ausrechnen und dann abspeichern? Oder verstehe ich das falsch? Aber die haben soviele Werte..kapiere das einfach nicht (sorry ..)
http://www.exploreourplanet.net - Ladet eure schönsten Urlaubsbilder hoch!
Ich versuche das malverbessern lasse ich mich gerne
-----ID-----Jahr-----Monat-----1-----2-----3...
1 2004 1 234 756 457
2 2004 2 756 746 254
...
Also es gibt eine Tabelle "Monatsbilder"
ID -> Primärschlüssel
Jahr -> Jahr
Monat -> Monat
1 -> beliebtestes
2 -> zweit beliebtestes
3 -> ...
So könnte ich mir das vorstellen zu lösen
Man kann niemanden überholen, wenn man in seine Fußstapfen tritt.
ne musst dir mal vorstellen was da für Datenmengen zusammenkommen (der hat von allen Bildern, allen Usern und von der Page Statistiken für etwa 5 verschiedene Zeiträume..).
Strogij please poste auch mal ein Beispiel so mit einer Tabelle, einfach möglichst anschaulich
http://www.exploreourplanet.net - Ladet eure schönsten Urlaubsbilder hoch!
Also ich versuche es nochmal zu erklären: für die Statistik gibt es eine Tabelle, wo die höchsten Werte drin stehen, sollte sich ein User jetzt ein Bild anschauen wird überprüft, ob die Besucherzahl von diesem Bild nicht größer ist als die in der Tabelle Statistik. Und der Zeitaufwand hängt nicht von der Datenmenge ab, da du in der Statistik-Tabelle bereits die id des zur Zeit höchsten Wertes hast und direkt darauf zugreifen kannst. Sollte ein anderes Bild eine größere Besucherzahl haben, wird dieser Datensatz einfach aktualisiert.
Hi
Krame diesen Beitrag wieder hervor, weil ich mich jetzt dann ans Programmieren mache und es nochmal versuchte zu verstehen. Also am meisten sehe ich die Lösung in der vno Snake, deine Strogij kapiere ich enifach nicht (sorry!)
Vielleicht einfach nochmal kurz skiziieren?
Tablle a
Tabelle b
Welche Felder
Einfach damit ich sehe was du meinst.
Ich verstehe einfach nicht wie die das von airliners.net machen. Ne aktuelle Top 100 ist ja easy. Aber der Rest, weil man müsste ne Tabelle Statistiken anlegen (ok), dann müsste man ja bei jedem View überprüfen, ob dies ein neuer Monat ist, wenn ja, dann fange einen neuen Datensatz in der Tabelle Statistiken an und dann müsste man 200 Felder in diesen Datensatz schreiben (also 1 Reihe 200 Kolonnen, da von jedem Bild ID und Views gespeichert werden muss). Bei jedem neuen View eines Bildes muss man dann zusätzlich überprüfen ob es schon in den Top 100 vorhanden ist und allenfalls die Position anpassen, das heisst alle Datensätze unter dem Datensatz verchieben...stell ich mir schon aufwendig vor?
Stimmt das?!
http://www.exploreourplanet.net - Ladet eure schönsten Urlaubsbilder hoch!
Mal so eine Idee:
Du hast die Tabelle mit den Bildern und ein Feld speichert die Anzahl der Abrufe in der akt. Woche. Montag um 0.00 läuft ein kleines Script das den Inhalt dieses Feldes in eine andere Tabelle kopiert ( BildID, WochenID und AnzAbrufe) und das Feld wird dann auf 0 zurückgesetzt.
Also für ne Top100 brauchst du schonmal keine extra tabelle..
ich könnte mir das noch so vorstellen, dass du von der Tabelle am Ende eines Tages die Top 100 in eine neue Tabelle lädst und mit dieser kannst du dann eine neue Monatstabelle füttern und damit eine Jahrestabelle und so weiter...
Sicherlich macht das viel Aufwand und ist sicherlicht nicht optimal, wär aber übersichtlich und auch recht flott umsetzbar..
"Man muss die Welt nicht verstehen, man muss sich nur darin zurechtfinden."
Einstein
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)