2016-09-21 2 views
3

Ich baue eine Website, wo Benutzer in der Lage sein werden, Spezifikationen zwischen Produkten zu vergleichen. Benutzer können Spezifikationen für ein einzelnes Produkt anzeigen, wo ich nur Spezifikationen für dieses spezifische Produkt benötige, aber sie können auch das ausgewählte Produkt mit jedem anderen auf der Website verfügbaren Produkt vergleichen. Ich denke, ich werde mit etwa 75-100 Produkten enden.PHP - Sitzungsvariable Leistung (Sitzung var vs Lesen von Datei)

Alle Spezifikationen sind in einer globalen CSV-Datei verfügbar. Jedes Produkt hat möglicherweise 37 Funktionen und es gibt zwischen 75-100. Die Größe dieser Datei beträgt ungefähr 50 KB. Ich habe auch einzelne Dateien für jedes Produkt, die die gleichen Daten enthalten, aber nur für ein Produkt.

Ich frage mich, was der beste Weg wäre, um eine gute Leistung zu gewährleisten:

  1. Legen Sie die ganze Datei in einem $ _SESSION es die ganze Zeit für alle Seiten zur Verfügung zu stellen. Dies bedeutet, dass alle Daten einmal geladen werden und jederzeit verfügbar sind, ohne dass eine zusätzliche Anfrage erforderlich ist. Kann dies jedoch die Leistung beeinträchtigen?

  2. Dateien laden einzeln, wenn sie benötigt werden, aber das bedeutet, dass, wenn jemand Produkte beginnt zu vergleichen (und das ist das Ziel), PHP-Dateien die ganze Zeit

  3. Speichern von Daten in einer Datenbank und den Zugriff zu lesen haben jedes Mal, wenn es notwendig ist

Was wäre die beste Option? Wenn Sie an eine andere Lösung denken, interessiert mich natürlich auch.

Dank

Antwort

1

Da Sie Daten gehst zu speichern, Sie könnte es in eine Datenbank setzen;)

Da Datenbank-Engines auf Caching wirklich gut sind, werden Sie wahrscheinlich nicht Sie müssen sich in absehbarer Zeit Gedanken über die Leistung machen, und Sie haben sich ein wenig Mühe gegeben, die "Datei" plötzlich viel größer zu machen.

Und wenn die Datenbank nicht genug Leistung ist, könnten Sie immer auf eine MEMORY-Tabelle in MySQL oder Memcached zum Beispiel zurückgreifen.

+0

Dank! Ich habe auch überlegt, die Datenbankoption zu verwenden, aber was ich gerne verstehen würde, ist, wenn es besser ist, so etwas wie 10 Abfragen in der Datenbank zu haben oder nachdem die ganze Datei geladen wurde? – Laurent

2

Das Laden der CSV in $ _SESSION muss immer noch für jede Anfrage erfolgen, was sich nicht sehr effizient anhört.

Mysql ist ideal für eine Schreib-einige/lesen-einige Lösungen, aber es scheint mir, dass Ihre Situation eher eine Schreib-selten/lesen-oft Situation ist.

Cache einen speicherinternen Verwendung wie eine der Optionen unter dem Inhalt der CSV zu speichern wahrscheinlich viel mehr Sinn machen würde:

+0

Hallo Stuart, danke! Ich bin in der Tat in einer Situation, wo ich 3-4 mal im Monat schreibe und viele Male (und viele Male in derselben Sitzung) lese. Ich muss mit dem Hosting-Unternehmen klären, ob sie die von Ihnen vorgeschlagenen Lösungen bereitstellen. Danke für Ihren Vorschlag! – Laurent