Salut,
ouep, j'avais déjà abordé le sujet là: https://toile.reinom.com/non-aux-taches-...aque-datee
Dans l'idée, c'est bien ce que tu as déjà en place: le batiment est censé se terminer à 3H59, mais le calcul a lieu à 7h du matin. Le calcul va donc se charger de simuler la construction du batiment à 3h59 et de simuler l'écoulement des 3h01 qui ont suivies. Il stockera alors la date de dernière production du batiment en BDD, ainsi que la quantité déjà produite à cette date (les stocks cette date donc).
Après, rien n'interdis d'avoir un CRON horaire ou quotidien pour éviter de trop "stacker" des actions, surtout pendant la nuit (aka, le jour, tu as peut-être des joueurs en continue qui joue, donc des simulations assez rapprochées et courtes, mais si personne ne vient de 22h à 8h, alors il va y avoir 10h de simulation à lancer lors de la visite du 1er joueur du jour: un CRON horaire permet de restreindre cette charge à 1H max).
Mais l'important, c'est bien et bien de détacher le moment où l'action a lieu dans le jeu (fin de construction du batiment) et le moment où cette action est réellement calculée. Parce qu'au fond, osef complètement de simuler la construction du batiment à 3h59 pile poil (ce qu'on n'arrivera *jamais* à faire d'ailleurs): si personne n'est là pour voir l'effet de ce bâtiment, il peut être construit ou démoli, ça ne charge rien : ) (oui, les jeux web sont quantiques: c'est un batiment de Schrodinger, dans un été superposé construit/non-construit)
Et pour répondre à l'autre question, je n'ai pas connaissance d'un "at" en PHP. Après, rien ne t'interdis d'avoir un script PHP lancé en ligne de commande, qui tourne en boucle (while true + usleep 10) et qui se charge de faire des calculs à une heure donnée. Mais à mon avis, c'est une architecture moisie.
ouep, j'avais déjà abordé le sujet là: https://toile.reinom.com/non-aux-taches-...aque-datee
Dans l'idée, c'est bien ce que tu as déjà en place: le batiment est censé se terminer à 3H59, mais le calcul a lieu à 7h du matin. Le calcul va donc se charger de simuler la construction du batiment à 3h59 et de simuler l'écoulement des 3h01 qui ont suivies. Il stockera alors la date de dernière production du batiment en BDD, ainsi que la quantité déjà produite à cette date (les stocks cette date donc).
Après, rien n'interdis d'avoir un CRON horaire ou quotidien pour éviter de trop "stacker" des actions, surtout pendant la nuit (aka, le jour, tu as peut-être des joueurs en continue qui joue, donc des simulations assez rapprochées et courtes, mais si personne ne vient de 22h à 8h, alors il va y avoir 10h de simulation à lancer lors de la visite du 1er joueur du jour: un CRON horaire permet de restreindre cette charge à 1H max).
Mais l'important, c'est bien et bien de détacher le moment où l'action a lieu dans le jeu (fin de construction du batiment) et le moment où cette action est réellement calculée. Parce qu'au fond, osef complètement de simuler la construction du batiment à 3h59 pile poil (ce qu'on n'arrivera *jamais* à faire d'ailleurs): si personne n'est là pour voir l'effet de ce bâtiment, il peut être construit ou démoli, ça ne charge rien : ) (oui, les jeux web sont quantiques: c'est un batiment de Schrodinger, dans un été superposé construit/non-construit)
Et pour répondre à l'autre question, je n'ai pas connaissance d'un "at" en PHP. Après, rien ne t'interdis d'avoir un script PHP lancé en ligne de commande, qui tourne en boucle (while true + usleep 10) et qui se charge de faire des calculs à une heure donnée. Mais à mon avis, c'est une architecture moisie.