Problem: wird NOW() gecashed? (MySQL4 + Apache2)

MySQL, PostgreSQL, SQLite
evgueni
Posts: 78
Joined: 2003-02-14 13:48
Location: Ilmenau

Problem: wird NOW() gecashed? (MySQL4 + Apache2)

Post by evgueni » 2004-12-02 20:53

Eine Frage an MySQL-Profis:
kann das sein dass die Werte der Funktion NOW() nicht immer aktuell sind? Also eventuell gecashed werden?

Ich habe gestern die Konfiguration des Apache bei meinem Server per suseconfig auf ENTERPRISE geändert (damit steigt die Anzahl der gleichzeitig laufenden APACHE-Prozesse) und seitdem habe ich das Problem, dass meine Skripte falsche Ergebnisse liefern.

Ich betreibe einen Besuchertausch, und speichere als Fakeschutz die Zeit des letzten Aufrufes des Hauptskriptes in der Datenbank. Das Skript wird von dem User jede 15 Sekunden aufgerufen. Wenn aber die Aufrufe näher aneinander liegen (also z.B. jede 5s kann man vermuten, dass der User das System umgehen will)

Deshalb folgende Abfrage:
SELECT ... Letzter_Besuch < date_sub(NOW(), interval 12 second) .... FROM ...
Seit gestern liefert die Abfrage bei ca. 80% der User NO. Und es kann ja nicht sein, dass 80% der User Faker sind :roll:

Bei einem erfolgreichen Aufruf wird dann der Letzter_Besuch auf aktuelle Zeit gesetzt:
UPDATE .... Letzter_Besuch=NOW() ...

Ich vermute jetzt, dass die NOW() bei einer hohen ANzahl an Apache-Prozessen verfälschte Werte liefert. Nur leider kann ich nicht sagen warum und ob es wirklich so ist. Vielleicht weiß einer von euch eine Antwort?

User avatar
Joe User
Project Manager
Project Manager
Posts: 11139
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Problem: wird NOW() gecashed? (MySQL4 + Apache2)

Post by Joe User » 2004-12-02 21:16

PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

evgueni
Posts: 78
Joined: 2003-02-14 13:48
Location: Ilmenau

Re: Problem: wird NOW() gecashed? (MySQL4 + Apache2)

Post by evgueni » 2004-12-02 21:51

Hm... ich glaube nicht dass das eine gute Idee ist... damit wird ja im prinzip nur die Priorität der Anfragen erhöht. Das Hauptskript generiert aber sowieso die meisten Anfragen, das ist damit meiner Meinung nach unkritisch.