Effectivement il existe une autre méthode. Ça ne s'applique peut-être pas à ton cas (ça manque de précisions pour en être sûr), mais bien souvent on a pas vraiment besoin que les mises à jour se fassent réellement de façon périodique.
Imagine, sur mon site il y a un utilisateur qui a un compteur de points. Il gagne 10 points chaque jour à minuit. Il y a la solution intuitive (la tienne) qui consiste à dire : "je vais mettre à jour ma BDD à minuit". Problème : sur Linux on passe par les tâches CRON, c'est pas que c'est chiant mais si tu bosses sur un serveur non-dédié tu peux oublier (bon, pas toujours, il me semble que les mutus chez OVH permettent de faire du CRON).
Et il y a la deuxième solution : est-ce que je veux que mes données soient mises à jour à minuit, où est-ce que je veux qu'elles soient mises à jour dès que quelqu'un les demande ? L'astuce c'est qu'on va utiliser l'utilisateur comme trigger. Exemple :
23h50 : l'utilisateur regarde son profil, il a 10 points
23h55 : l'utilisateur regarde son profil, il a toujours 10 points
Minuit ! Notre utilisateur s'est endormi et ne regarde pas son profil, la BDD contient toujours "10 points"
Le lendemain matin à 9h, notre utilisateur se réveille (à ce moment la BDD contient encore "10 points" mais il ne le sait pas), il va voir son profil, mais plutôt que d'aller chercher le nombre de points en BDD, on va regarder s'il est plus de minuit et si la date du jour est différente de la date de dernière mise à jour. C'est à ce moment là qu'on met à jour la BDD. Et ensuite seulement on récupère les "20 points" de notre utilisateur
C'est le CRON du pauvre quoi, pour résumer au lieu de réellement faire un calcul périodiquement, on va faire le calcul uniquement quand un visiteur demande la page, mais lui ne le saura pas 