Registriert: Do Sep 25, 2003 15:56 Beiträge: 7804 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Macht euch mal keine Sorgen wegen dem harten Kern. Die 30Posts sind kein Problem. Selbst wenn du eine Woche nicht dagewesen wärst, hättest du die 30 geschafft.
Viele schreiben mehr als 1Beitrag pro Tag - eher 3-4. Und wenn man da regelmäßig da ist, schafft man die 30 ganz automatisch.
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Coolcat hat geschrieben:
Kern = 50 Posts in den letzten zwei Monaten Regelm. = 25 Posts in den letzten zwei Monaten Aktiv = 1 Post in den letzten zwei Monaten
Ich hatte ehrlichgesagt schon drei Monate angedacht, aber es gab gegenstimmen . Wartet erstmal die nächsten Monate ab. Wenn die Werte dann grausig sind, können wir's ja anpassen.
Coolcat hat geschrieben:
Und das ganze wird dann entweder täglich automatisch aktualisiert, oder eben einmal im Monat von Hand (unter der Annahme, dass das aktuell auch jemand von Hand macht)
Täglich ist schlecht. Die queries sind sehr performancelastig. Im Moment wird mit nem Cache gearbeitet. Wenn der Monat des aktuellen Timestamps größer ist als der Cachetimestamp, werden die Werte neu berechnet.
greetings
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Täglich ist schlecht. Die queries sind sehr performancelastig. Im Moment wird mit nem Cache gearbeitet. Wenn der Monat des aktuellen Timestamps größer ist als der Cachetimestamp, werden die Werte neu berechnet.
Nachts um 3 Uhr machen? Da habe ich z.B. eh GERADE nen Reconnect. ^^ Ne, aber allgemein, was spricht gegen ein nächtliches Updaten, wo die Serverlast ja geringer sein sollte?
LG Ziz
PS: „wegen“ geht mit Genitiv und wird manisch depressiv, wenn es mit dem Dativ zusammen gehen soll.
_________________ Denn wer nur schweigt, weil er Konflikte scheut, der macht Sachen, die er hinterher bereut. Und das ist verkehrt, denn es ist nicht so schwer, jeden Tag zu tun als ob's der letzte wär’. Und du schaust mich an und fragst ob ich das kann. Und ich denk, ich werd' mich ändern irgendwann. _________________Farin Urlaub - Bewegungslos
Täglich ist schlecht. Die queries sind sehr performancelastig
Öh....so langsam kann das doch nicht sein das man das nicht irgendwann mitten in der Nacht...sagen wir 4 Uhr morgens...machen könnte?
Also ohne jetzt groß Ahnung von phpbb zu haben, das DB-Layout sieht doch recht simpel aus: Wenn man sich für phpbb_posts einen Index über post_time anlegt sollte das recht fix gehen. So unglaublich viele Post gibt es hier im Monat ja nicht. Indexanlegen geht z.B. in MySQL so:
Code:
CREATE INDEX idx_post_time ON phpbb_posts(post_time);
Dann reicht eine Anfrage wie
Code:
SELECT poster_id FROM phpbb_posts WHERE post_time >= zeit GROUP BY poster_id ORDER BY NULL;
Die Ausgabe ist nach poster_id sortiert, man muss nur noch zählen wie viele mal jede poster_id hintereinander vorkommt. Das sollte sich da noch irgendwie in die Anfrage einbauen lassen. Weiß aber jetzt so ausm Kopf nicht...so bewandert bin ich in SQL dann auch nicht.
Ok, nun hab ich's Alles in einer Abfrage, die auch recht fix gehen sollte:
Code:
SELECT count(*) FROM (SELECT count(poster_id) AS postcount FROM phpbb_posts WHERE post_time >= zeit GROUP BY poster_id ORDER BY NULL) AS tmptable WHERE postcount >= 30;
Funktioniert so wahrscheinlich nur mit MySQL.
Edit: Die poster_id wird in der temporären Tabelle natürlich nicht benötigt, wenn man letztlich nur die Anzahl will.
_________________ Yeah!
Zuletzt geändert von Coolcat am So Jun 27, 2010 18:33, insgesamt 1-mal geändert.
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Die Basis ist nicht >= Zeit sondern ein Kalendermonat. Das wird mit "WHERE MONTH(FROM_UNIXTIME(poster_time)) = $month" realisiert. Das macht glaube ich auch einen Index recht nutzlos.
Aber das Thema, ob täglich oder nicht ist eigentlich total egal. Da die Auswertungen Monatsbasiert sind, ist tägliche Aktualisierung einfach overkill. Zumal wir keine Cronjobs haben, sondern es den ersten treffen würde, der nach der zeitlichen Grenze wieder auf delphigl.com geht.
Deine Query ist ziemlich genau das, was schon aufm Server läuft. Nur, dass die unsrige an den Monaten orientiert ist .
greetings
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Das wird mit "WHERE MONTH(FROM_UNIXTIME(poster_time)) = $month" realisiert. Das macht glaube ich auch einen Index recht nutzlos.
Wenn du die Anfrage so stellst wird der Index nicht genutzt. Du kannst aber
Code:
monat_anfang <= post_time AND post_time <= monat_ende
testen, dann kann der Index genutzt werden. Alternativ sollte sich der Index glaube ich auch direkt über MONTH(FROM_UNIXTIME(poster_time)) erzeugen lassen, wobei ich aber nicht weiß ob MySQL dann erkennt das es den Index nutzen kann.
Zitat:
Da die Auswertungen Monatsbasiert sind, ist tägliche Aktualisierung einfach overkill.
Ich hätte jetzt "Monat" einfach einen 30 Tage Zeitraum genannt....also "JETZT - 30 Tage"...und das täglich aktualisieren.
Zitat:
Zumal wir keine Cronjobs haben, sondern es den ersten treffen würde, der nach der zeitlichen Grenze wieder auf delphigl.com geht.
Mit dem Index sollte diese Anfrage DEUTLICH unter einer Sekunde zu schaffen sein, in so fern sehe ich da kein Problem. Wobei ein Cronjob natürlich eleganter wäre.
Zumal wir keine Cronjobs haben, sondern es den ersten treffen würde, der nach der zeitlichen Grenze wieder auf delphigl.com geht.
Kann man nicht einfach aus dem Forum herraus zB den Google Bot umleiten und ihn für die Berechnungen benutzen? Irgendein Bot ist fast sowieso immer da, und ob der jetzt nen bisschen länger wartet oder nicht glaube ich ist nicht das Problem.
Zumal wir keine Cronjobs haben, sondern es den ersten treffen würde, der nach der zeitlichen Grenze wieder auf delphigl.com geht.
Hm, da ich meist bis 4 Uhr nachts wach bin und aus Langeweile schaue, was im Forum so los ist, bin ich dagegen. ^^
_________________ Denn wer nur schweigt, weil er Konflikte scheut, der macht Sachen, die er hinterher bereut. Und das ist verkehrt, denn es ist nicht so schwer, jeden Tag zu tun als ob's der letzte wär’. Und du schaust mich an und fragst ob ich das kann. Und ich denk, ich werd' mich ändern irgendwann. _________________Farin Urlaub - Bewegungslos
Die Basis ist nicht >= Zeit sondern ein Kalendermonat. Das wird mit "WHERE MONTH(FROM_UNIXTIME(poster_time)) = $month" realisiert. Das macht glaube ich auch einen Index recht nutzlos.
Aber das Thema, ob täglich oder nicht ist eigentlich total egal. Da die Auswertungen Monatsbasiert sind, ist tägliche Aktualisierung einfach overkill. Zumal wir keine Cronjobs haben, sondern es den ersten treffen würde, der nach der zeitlichen Grenze wieder auf delphigl.com geht.
Ich kann zuhause mal schauen, aber ich meine das sollte bei einem Index auf `poster_timer` trotzdem greifen. Hauptproblem ist eher die Umrechnung von Unix Timestamp nach Datetime.
Wie lange dauert denn die Abfrage auf dem Live-System? Zuhause als ich das entwickelt hatte war das relativ schnell ohne Index.
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Thereifixedit.
Dateianhang:
fix.png
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.