Se connecter avec
S'enregistrer | Connectez-vous

Modification automatique d'une BDD

Dernière réponse : dans Programmation
Lassé par la pub ? Créez un compte
Expert Programmation

Bonjour Dagobah,

Je vois trois solutions pour faire ça :

- Avec le planificateur de tâches de ton SGBD, par exemple si tu utilises MySQL : http://dev.mysql.com/doc/refman/5.1/en/events-overview....

- Avec le planificateur de tâches du système, par exemple crontab sous unix.

- En ajoutant la date de la dernière mise à jour dans ton schéma, avant chaque lecture ( avec un trigger ou autre ) tu mets à jour le nombre de points si ça la dernière mise à jour date de plus de une heure
Expert Programmation

Tu es sur quel genre d'hébergement aussi ? Si c'est du mutualisé comme le laisse entendre ta réponse je pense pas que tu puisses utiliser les event ni les crontab.

Regarde plutôt du côté de la troisième solution même si c'est moins joli. Tu peux faire ça de façon purement algorithmique dans ta fonction qui récupère le nombre de points. Il faut juste faire attention aux accès concurrents.

  1. fonction getNombrePoints() : entier
  2. verouillerTable()
  3. nombreHeuresDepuisDernièreMaj = (now() - selectDateDerniereMaj())/60
  4. si nombreHeuresDepuisDernièreMaj >= 1
  5. updateNombrePoints( selectNombrePoints() + 5* nombreHeuresDepuisDernièreMaj )
  6. updateDateDerniereMaj(dateDerniereMaj + nombreHeuresDepuisDernièreMaj*60)
  7. finsi
  8. deverouillerTable()
  9. retourner selectNombrePoints()
  10. fin
Lassé par la pub ? Créez un compte
Tom's guide dans le monde