Order By Rand(floor(unix_timestamp()/1814400))

son gohan

Erfahrenes Mitglied
Hallo,

ich benutze das ORDER BY RAND(FLOOR(UNIX_TIMESTAMP()/3)) query aber verstehe es noch nicht ganz genau.

Wenn ich da z.B. eine Zeit von 3 WOchen in Sekunden angebe, und jemand öffnet die Seite im Browser, dann würde es ja nach meinem Verständnis erst nah 3 Wochen wieder zu einer zufälligen Ausgabe per RAND kommen, wenn der Betrachter der Seite aber auch diese Seite 3 Wochen lang im Browser geöffnet hat oder?

Wenn er aber die Seite wieder wechselt und wieder besucht, dann würde doch der TIMESTAP wieder von vorne losgehen, also müsste man wieder 3 Wochen lang warten bis sich was ändert?

Da ich keine 3 Wochen zum Testen Zeit habe habe ich natrürlich eine kleine Zeitangabe von 4 Sekunden gemacht und es läuft so wie beschrieben, aber ich bin mir halt nicht gnz sicher ob ich das richtig verstanden habe, eigentlich wollte ich erreichen das sich alle 3 Wochen mal die Ausgabe ändern, aber dazu müsste ja zum Anfang ein Anker gesetzt werden ab wann die Zeit ablaufen soll, bei dem query ist es aber glaub ich nicht so das ein Anker gesetzt wird, sondern so, das immer bei erneutem aufruf der Seite die Zeit anfängt abzulaufen.

Wer kennt sich mal damit aus?
 
Der Timestamp bezieht sich auf die Uhr am Server und wird daher nicht durch den User oder dessen Reloadverhalten beeinflußt.
Nur, wenn Du die Zeit am Server umstellst, manipulierst Du das 3-Wochen-Intervall, nach dem sich der Inhalt der Seite ändert.
Änderungen am Datenbestand können aber auch zu Änderungen der Ausgabe innerhalb des 3-Wochen-Intervalls führen. "Schuld" daran ist der Zufallszahlenstrom, den ich bereits beschrieben habe.

Gruß hpvw
 
Der Timestamp bezieht sich auf die Uhr am Server und wird daher nicht durch den User oder dessen Reloadverhalten beeinflußt.
Nur, wenn Du die Zeit am Server umstellst, manipulierst Du das 3-Wochen-Intervall, nach dem sich der Inhalt der Seite ändert.
Änderungen am Datenbestand können aber auch zu Änderungen der Ausgabe innerhalb des 3-Wochen-Intervalls führen. "Schuld" daran ist der Zufallszahlenstrom, den ich bereits beschrieben habe.

Nur zum Verstandnis: bedeutet das etwa das bei dieser Funktion der TIMESTAMP ab dem Zeitpunkt losgeht, ab dem man die Seite mit dem MySQL Abfragescript in sein Webserver ladet?

Wenn ich also heute Abend eine Seite mit so einem MySQL Abfragescript auf den Server lade, und einen TIMESTAMP von 3 Wochen ( 1814400 Sekunden ) einstelle, dann würde also die nächste zufällige Ausgabe per RAND query aus der MySQL Datenbank erst nach 3 Wochen wieder erfolgen, egal wie oft der User noch in der Zeit meine Seite besucht, weil das ganze halt Serverseitig gespeichert wird?

Korigier mich bitte wenn ich das falsch verstanden habe.
 
Das Wechselintervall ist so viele Sekunden lang, wie drei Wochen in Sekunden ausgedrückt lang sind. Der Wechselzeitpunkt bezieht sich nicht auf den Upload- und auch nicht auf den Requestzeitpunkt, sondern auf den Zeitpunkt 0 der Unix-Epoche, welcher irgendwo bei 1970 liegt.
Bei einem so langem Interval muß man auch nicht unbedingt mit dem Unix-Timestamp arbeiten:
Code:
... ORDER BY RAND(FLOOR(TO_DAYS(NOW())/21))
In dem Fall bezieht sich der Wechselzeitpunkt auf das Jahr 0.

Gruß hpvw
 
Zurück