2012-03-30 5 views
3

Ich baue eine Website, die empfohlene Seiten für Benutzer anzeigt.PHP, welches ist der bessere Weg zwischen dem Speichern von Daten in Sitzung und Datenbank?

Benutzer klicken nur auf die nächste Schaltfläche, um verschiedene empfohlene Webseiten zu betrachten.

Ich möchte alle einzelnen Aktivitäten überprüfen, die Benutzer machen können.

Also, ich werde Seitenansichten überprüfen, die Benutzer tatsächlich sehen.

1. there is a 'user_pageview' column for each users. 
2. the numbers will increase every time if users click next button. 

Ich kann eine Abfrage senden, um Daten jedes Mal zu aktualisieren.

Allerdings glaube ich, dass dieser Schritt auf meinem Server nervt.

Also, ich denke, die Daten für eine Weile in Sitzung zu speichern und später speichern.

Was denken Sie?

+4

+1 für die Störung Ihres Servers –

Antwort

3

Ja, es wird "nerven Ihren Server".
So, wie Sie Ihr Auto "fahren", indem Sie es fahren.

Absicht des Datenbank-Servers ist es, die Daten zu arbeiten - zu speichern, abrufen, Filter usw.
Es gibt nichts im Wesentlichen falsch mit Daten in der Datenbank zu speichern.

Möglicherweise gibt es ein Problem, ja, mit Index Wiederaufbau (falls vorhanden).
Es würde jedoch ein Problem mit der Verfolgung der Benutzersitzung geben.

Also, ich werde nicht mit der Sitzung belästigen, bis ich bestimmte Probleme mit der Datenbank habe (die höchstwahrscheinlich nie auftreten wird).

1

Ich sehe nicht, was auf jedem Seitenaufruf mit Inkrementieren user_pageview falsch ist, könnten Sie tun

update table views set user_pageview = user_pageview + 1 where page_id = 4 

Ihr PHP-Skript wäre zu Ihrer DB ohnehin verbunden war und dass Abfrage allein soll nicht Ihren Server töten .

+1

Bitte beachten Sie, dass diese Abfrage die gesamte MYISAM-Tabelle bis zur Fertigstellung sperren wird. InnoDB kann für Views-Tabellen empfohlen werden. –

0

Wenn Sie sie in die Sitzung speichern, wird dies auch Ihren Server "nerven", da Sie eine Anfrage stellen müssen, um sie in der Sitzung speichern zu können.

Wenn Sie den DB-Server meinen, ist meine Frage: Ist es ein Problem. Ist Ihnen aufgefallen, dass der Datenbankserver zum Engpass wird? Ich denke nicht, weil der DB-Server einfach damit umgehen kann.

Aber ich habe Sie wirklich db Leistungsprobleme und nur dann sollten Sie einen Weg finden, den DB-Server durch Caching Zeug zu entlasten. Sie können es beispielsweise in der Sitzung speichern (stellen Sie sicher, dass Sie die Datenbank aktualisieren, bevor die Sitzung zerstört wird) oder indem Sie einen Cache auf der Clientseite (lokaler Speicher) verwenden.

Wieder sollten Sie nur in diese IF schauen, wenn der DB-Server zum Engpass wird. Und wenn dies der Fall ist, würde ich zuerst versuchen, herauszufinden, WTH geht falsch mit meiner db (warum es der Flaschenhals ist).

Verwandte Themen