Voici un lien pour l'exécution de scripts "en tâche de fond" pour php :
http://matthieu.developpez.com/execution_periodique/#L6
J'ai testé et ca fonctionne mais cela devrait être approfondi pour connaitre la charge maximale d'évènements à traiter. J'ai donc créé un petit script qui s'exécute toutes les secondes qui a pour rôle de lire depuis une table d'évènements les tâches à traiter (ou qui auraient du l'être si le serveur est à la "bourre").
Pour chaque évènement traité, le script l'efface de la liste et une fois tous traités il se met en veille (usleep()) au plus 1 seconde. En fait, il se met en veille pendant une durée calculée en ôtant le temps mis à traiter les évènements de 1 seconde : ainsi, si le script a mis 40ms pour traiter la file d'attente, alors il va dormir pendant 60ms.
Ca fonctionne sur le papier et en théorie avec un jeu d'essai "laboratoire", mais comme vous je suis curieux de savoir comment ogame et travian par exemple fonctionnent.
@Anthor : la première voie est fonctionnelle si de nombreux joueurs sont connectés, en gros plus on a de joueurs plus on a de chance d'avoir fréquemment le traitement des évènements exécuté, et forcément plus la fréquence de ces traitements est élevée moins il y a à traiter à chaque fois . Penses tu que travian & co utilisent ce système là?
http://matthieu.developpez.com/execution_periodique/#L6
J'ai testé et ca fonctionne mais cela devrait être approfondi pour connaitre la charge maximale d'évènements à traiter. J'ai donc créé un petit script qui s'exécute toutes les secondes qui a pour rôle de lire depuis une table d'évènements les tâches à traiter (ou qui auraient du l'être si le serveur est à la "bourre").
Pour chaque évènement traité, le script l'efface de la liste et une fois tous traités il se met en veille (usleep()) au plus 1 seconde. En fait, il se met en veille pendant une durée calculée en ôtant le temps mis à traiter les évènements de 1 seconde : ainsi, si le script a mis 40ms pour traiter la file d'attente, alors il va dormir pendant 60ms.
Ca fonctionne sur le papier et en théorie avec un jeu d'essai "laboratoire", mais comme vous je suis curieux de savoir comment ogame et travian par exemple fonctionnent.
@Anthor : la première voie est fonctionnelle si de nombreux joueurs sont connectés, en gros plus on a de joueurs plus on a de chance d'avoir fréquemment le traitement des évènements exécuté, et forcément plus la fréquence de ces traitements est élevée moins il y a à traiter à chaque fois . Penses tu que travian & co utilisent ce système là?