22-08-2012, 08:51 PM
Le plus important, c'est d'avoir un système de scheduling couplé à un système de queueing, qui permettra d'écrire du code genre :
Et comme ça, dans 4 minutes (et quelques secondes) après le lancement de ce code, la méthode
Selon moi, les meilleurs candidats pour ça en PHP sont PHP Resque Scheduler et PHP Resque. Ça demande bien sûr un serveur dédié.
Après, pour envoyer des informations aux navigateurs (sans que lui n'ai à les demander), il faut effectivement une solution de Push. Ici, je conseille souvent Juggernaut mais il ne sera plus maintenu (bien qu'il fonctionne très bien). Il y a aussi Faye et des services Web (avec pallier gratuit assez conséquent) comme PubNub, c'est encore plus facile.
$in = strtotime('+4 minutes');
$args = array('building_type_id' => $building->getId(), 'player_id' => $player->getId());
ResqueScheduler::enqueueIn($in, 'buildings', 'FinishBuildingConstruction', $args);
Et comme ça, dans 4 minutes (et quelques secondes) après le lancement de ce code, la méthode
perform
de ta classe FinishBuildingConstruction
sera appelée avec les arguments $args
, te permettant d'exécuter ce que tu veux.Selon moi, les meilleurs candidats pour ça en PHP sont PHP Resque Scheduler et PHP Resque. Ça demande bien sûr un serveur dédié.
Après, pour envoyer des informations aux navigateurs (sans que lui n'ai à les demander), il faut effectivement une solution de Push. Ici, je conseille souvent Juggernaut mais il ne sera plus maintenu (bien qu'il fonctionne très bien). Il y a aussi Faye et des services Web (avec pallier gratuit assez conséquent) comme PubNub, c'est encore plus facile.