PHP / mySQL - recalcul régulier des valeurs de référence à mesure que les nouveaux utilisateurs envoient leurs données

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

Question

Je suis confronté à un nouveau type de problème que je n’ai pas encore rencontré dans ma très jeune programmation "carrière". et aimerait connaître votre opinion sur la meilleure façon de la combattre.

La situation Une application de recherche (php / mysql) recueille des données sur la santé liées au stress des utilisateurs. L'utilisateur obtient une analyse après avoir rempli le questionnaire. La valeur de chaque paramètre est transformée en une valeur en centile à l'aide d'un repère (écart moyen et standard de l'ensemble de données existant).

La tâche Étant donné que de plus en plus de personnes remplissent le questionnaire, il est possible de rendre les valeurs de référence (moyenne / écart type) plus précises en les recalculant à l'aide des nouvelles données utilisateur. Je souhaite que la base de données exécute régulièrement un script mettant à jour les valeurs de référence.

La question Je n'ai jamais utilisé de précédents mémorisés jusqu'à présent et je n'ai qu'une petite idée de ce qu'ils sont, mais j'ai le sentiment qu'ils pourraient peut-être m'aider avec cela? Ou devrais-je écrire le script en php puis mettre en place un travail cron?

[edit] Après les deux premières réponses, cron semble être le bon choix. [/ edit]

Était-ce utile?

La solution

Ce que vous envisagez pourrait être fait de différentes manières.

  1. Vous pouvez configurer un déclencheur dans votre base de données pour recalculer les valeurs chaque fois qu'un nouvel enregistrement est mis à jour. Vous pouvez stocker le code nécessaire pour mettre à jour les valeurs dans un sproc si nécessaire.

  2. Vous pouvez écrire un script PHP et l'exécuter régulièrement via cron.

# 1 ralentira les insertions dans votre base de données mais veillera à ce que vos données soient toujours à jour. # 2 peut verrouiller les tables pendant la mise à jour des nouvelles valeurs, et vos données ne seront précises que jusqu'à la prochaine mise à jour. # 2 est beaucoup plus facile à sauvegarder, car le script peut facilement être stocké dans votre système de gestion de versions, alors que vous auriez besoin de stocker les scripts de création de déclencheur et de sproc dans la sauvegarde que vous feriez.

Évidemment, vous devrez évaluer vos besoins avant de choisir une méthode.

Autres conseils

PHP configuré en tant que tâche cron vous permet de le conserver dans votre système de gestion de code source. Si vous utilisez une couche d'abstraction de base de données, elle sera portable vers d'autres bases de données si vous décidez un jour de basculer. Pour ces raisons, j’ai tendance à utiliser des scripts plutôt que des procédures stockées.

Le moyen le plus simple de rendre ce travail efficace est probablement d'écrire un script dans le même langage que votre site Web (sonne comme PHP) et de l'appeler depuis cron.

Nul besoin de compliquer les choses en plaçant la logique à deux endroits (vos calculs existants et une procédure stockée).

Si le volume de données est suffisamment important pour que le calcul à la volée soit trop volumineux, vous pouvez soit:

  1. Travail cron avec script php pour dénormaliser les totaux
  2. Déclencheur insère qui incrémente les totaux

Choisissez la tâche cron . Simple, solide, fonctionne. Dans le monde PHP / MySQL, je dirais que les procédures stockées sont inefficaces.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top