2009-10-11 10 views
0

J'essaie de planifier comment intégrer certaines fonctionnalités dans ma nouvelle application, et je ne suis pas sûr qu'il existe un moyen "correct" de réaliser ce que je suis à la recherche.Comment tester le test pour l'application, la base de données et les changements de date sans fonction déclenchée

Il ya certaines choses que je veux faire avec mon site, dire quand un certain dateTime est apparié à une autre date, puis envoyer un courriel.

Ou, par exemple, considérons les badges sur stackoverflow, pensez-vous que cela est fait avec un gros test de boucle pour les gens qui se qualifient pour de nouveaux badges, ou y at-il un motif de design qui me manque?

Ceci est mon plan actuel.

  1. Configuration d'une fonction, qui sera déclenchée toutes les 1-10 minutes, qui va vérifier la db pour toutes les règles sont respectées, et donc les mesures à prendre.

  2. Ajouter ces contrôles sur une base par utilisateur, lorsqu'un utilisateur regarde tous les documents relatifs à leur disposition, ou les journaux dans.

Si quelqu'un pouvait éclairer sur la façon par exemple ebay gérerait il est notifications par courrier électronique, je pense que cela me diriger dans la bonne direction.

Merci pour toute aide. Même le nom de ce que je cherche serait grandement utile.

Répondre

1

Ce que vous faites est, en effet, généralement fait en dehors de "l'application web". Vous pouvez l'appeler un "travail par lots", ou une "tâche planifiée", ou ce que vous voulez. Le façon est généralement fait, au moins sur les systèmes de type unix, en utilisant cron. Cron utilise un simple fichier de configuration pour dire, par exemple, "toutes les dix minutes, exécutez le script shell qui nettoie la base de données utilisateur", ou, "A minuit, videz la base de données". Si vous utilisez un serveur Windows, je ne sais pas comment cela se fait habituellement.

+0

oui, cela me semble bon, j'ai déjà utilisé des crons. Ce que je me demande, cependant, est qu'il y a une meilleure façon de le faire, cela ne veut pas dire exécuter le travail par lots tout le temps. Pour les notifications par e-mail, etc, je veux qu'ils soient envoyés dès que possible, mais j'espère que non avec l'exécution du lot entier chaque minute. –

+0

Oui, en effet. Cela se fait généralement grâce à l'utilisation de files d'attente de messages. –

+0

Je pense aussi à avoir une file d'attente, donc l'application doit être bloquée en faisant des choses, ou peut envoyer du courrier de façon ordonnée. –

0

Il y a probablement une lib disponible pour cela. Si vous utilisez Java Quartz pourrait être pour vous: http://www.quartz-scheduler.org/

J'espère que quelque chose de similaire est disponible pour d'autres langages grand public.