PHP / mySQL - regelmäßige Neuberechnung der Benchmarkwerte als neue Benutzer ihre Daten einreichen

StackOverflow https://stackoverflow.com/questions/83088

Frage

ich mit einer neuen Art von Problem konfrontiert werde, die ich noch nicht in meiner sehr jungen Programmierung „Karriere“ gestoßen und mochte Ihre Meinung wissen, wie es am besten in Angriff zu nehmen.

Die Situation Eine Forschungsanwendung (PHP / MySQL) sammelt von den Benutzern stressbedingten Gesundheitsdaten. Benutzer erhält eine eine Analyse nach dem Ausfüllen des Fragebogens. Wert für jeden Parameter in einen Perzentilwert transformiert wird unter Verwendung eine Benchmark (Mittelwert und Standard devitation vorhandenen Datensatz).

Die Aufgabe Da immer mehr ppl im Fragebogen füllen, da das Potenzial ist den Benchmark-Wert (Mittelwert / SD) genauer durch neu berechnet sie unter Verwendung der neuen Nutzerdaten zu machen. Ich würde die Datenbank gerne regelmäßig ein Skript ausführen, das die Benchmark-Werte aktualisiert.

Die Frage Ich habe noch nie so weit gespeichert precedures verwendet, und ich habe nur eine geringe Vorstellung von dem, was sie sind, aber irgendwie habe ich das Gefühl, sie vielleicht mir dabei helfen könnten? Oder soll ich schreibe das Skript als PHP und dann einen Cron-Job einrichten?

[Bearbeiten] Nach den ersten paar Antworten, die es wie cron aussieht, ist eindeutig der Weg zu gehen. [/ Edit]

War es hilfreich?

Lösung

Was Sie in Betracht ziehen in einer Reihe von Wegen durchgeführt werden kann.

  1. Sie könnten Sie einen Trigger in Ihrer DB die Werte neu zu berechnen, wenn ein neuer Datensatz aktualisiert wird. Sie könnten den Code zu speichern, benötigt, um die Werte in einem sproc zu aktualisieren, falls erforderlich.

  2. Sie können einen PHP-Skript schreiben und es regelmäßig über cron.

# 1 werden Einsätze in Ihrer Datenbank verlangsamt aber sicherstellen, dass Ihre Daten immer up to date. # 2 können die Tabellen sperren, während sie die neuen Werte aktualisiert, und Ihre Daten werden nur bis zum nächsten Update genau sein. # 2 ist viel leichter zu sichern, wie das Skript einfach in Ihrem Versionierungssystem gespeichert werden kann, während Sie den Auslöser und sproc Erstellungsskripts speichern müssen in welcher Backup Sie würden machen.

Natürlich werden Sie haben Ihre Anforderungen abzuwägen, bevor Sie eine Methode auswählen.

Andere Tipps

gesetzt PHP auf, als ein Cron-Job Sie Code-Management-System halten Sie es in Ihrer Quelle können, und wenn Sie eine Datenbank-Abstraktionsschicht verwenden werde es auf andere Datenbanken tragbar sein, wenn Sie jemals wechseln entscheiden. Aus diesen Gründen neige ich dazu, mit Skripten über gespeicherte Prozeduren zu gehen.

Der einfachste Weg, um diese Arbeit zu machen, ist wahrscheinlich ein Skript in der gleichen Sprache zu schreiben, mit Ihrer Website ist (wie PHP klingt) und es von cron aufrufen.

Keine Notwendigkeit, macht es komplizierter, als es braucht, indem die Logik an zwei Stellen (Ihre vorhandenen Berechnungen und eine gespeicherte Prozedur).

sein

Wenn das Datenvolumen ist groß genug, dass es im laufenden Berechnung zu viel ist, dann entweder:

  1. Cron Job mit PHP-Skript die Summen denormalise
  2. Trigger auf Einsätze, die Summen
  3. erhöht
Gehen Sie

mit dem Cron-Job Art und Weise. Einfache, solide, funktioniert. In der PHP / MySQL Welt würde ich sagen, Stored Procedures no-go.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top