Test d'optimisayion de la file d'attente
continuous-integration/drone/push Build is passing Details

ServeurDeTest
Noé GARNIER 2 years ago
parent d1a5989845
commit 3aa57e274a

@ -40,8 +40,11 @@ class UserController
case "goToQueue": case "goToQueue":
$this->goToQueue(); $this->goToQueue();
break; break;
case "queuing": case "waiting":
$this->queuing(); $this->waiting();
break;
case "addToQueue":
$this->addToQueue();
break; break;
case "logout": case "logout":
$this->logout(); $this->logout();
@ -211,32 +214,38 @@ class UserController
require($rep . $vues['erreur']); require($rep . $vues['erreur']);
} }
} }
public function queuing(){ public function waiting(){
try { try {
global $rep, $vues, $error; global $rep, $vues, $error;
$model = new UserModel(); $model = new UserModel();
$utilisateur = $_SESSION['utilisateur']; $idPartie = $_SESSION['idPartie'];
$reponse = $model->addToQueue($utilisateur->getEmail()); $etat = $model->getEtatPartie($idPartie);
$etat = $reponse[1]; // $lesJoueurs = $model->getLesJoueurs($idPartie);
$idPartie = $reponse[0];
$_SESSION['idPartie'] = $idPartie;
$lesJoueurs = $model->getLesJoueurs($idPartie);
if($etat == 1){ if($etat == 1){
$model->launchGame($idPartie); // $model->launchGame($idPartie);
header("Location: index.php?action=goToGame&idPartie=" . $idPartie . "&index=1"); $echo = "1";
// header("Location: index.php?action=goToGame&idPartie=" . $idPartie . "&index=1");
} }
else{ else{
while ($etat != 1){ $echo = "0";
sleep(5);
$etat = $model->getEtatPartie($idPartie);
}
header("Location: index.php?action=goToGame&idPartie=" . $idPartie . "&index=1");
} }
} catch (Exception $e) { } catch (Exception $e) {
$error = $e->getMessage(); $error = $e->getMessage();
require($rep . $vues['erreur']); require($rep . $vues['erreur']);
} }
} }
public function addToQueue(){
try {
global $rep, $vues, $error;
$model = new UserModel();
$utilisateur = $_SESSION['utilisateur'];
$idPartie = $model->addToQueue($utilisateur->getEmail());
$_SESSION['idPartie'] = $idPartie;
} catch (Exception $e) {
$error = $e->getMessage();
require($rep . $vues['erreur']);
}
}
public function goToGame() public function goToGame()
{ {

@ -25,7 +25,7 @@ class UserModel
require($rep . $view['erreur']); require($rep . $view['erreur']);
} }
} }
public function addToQueue($mailUtilisateur) : array{ public function addToQueue($mailUtilisateur) : int{
$idPartie=$this->partie_gateway->findPartieInQueue(); $idPartie=$this->partie_gateway->findPartieInQueue();
if ($idPartie == 0){ if ($idPartie == 0){
$enigme= $this->enigme_gateway->getRandomEnigme(); $enigme= $this->enigme_gateway->getRandomEnigme();
@ -40,7 +40,7 @@ class UserModel
} }
$tpsMaxPartie = $this->calculTpsMaXPartie($idPartie); $tpsMaxPartie = $this->calculTpsMaXPartie($idPartie);
$_SESSION['tpsMaxPartie'] = $tpsMaxPartie; $_SESSION['tpsMaxPartie'] = $tpsMaxPartie;
return array($idPartie, $etat); return $idPartie;
} }
public function calculTpsMaXPartie( int $idPartie) : int { public function calculTpsMaXPartie( int $idPartie) : int {

@ -1,3 +1,21 @@
function displayWaiting(){ function displayWaiting(){
document.getElementById("waiting").innerHTML = "Waiting for Coders..."; document.getElementById("waiting").innerHTML = "Waiting for Coders...";
document.getElementsByClassName("btn").style.display = "none"
}
function checkIsReady() {
var xhr = new XMLHttpRequest();
xhr.open('POST', 'http://82.165.180.114/Scripted/WEB/index.php?action=waiting', true);
xhr.responseType = 'text';
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.onload = function () {
if (xhr.responseText == "1") {
window.location.href = 'http://82.165.180.114/Scripted/WEB/index.php?action=goToGame&idPartie=" . $idPartie . "&index=1"'
}
};
xhr.send(null);
}
function waiting(){
displayWaiting();
var countdownTimer = setInterval('checkIsReady()', 1000);
} }

@ -59,7 +59,7 @@
<div class="row"> <div class="row">
<div class="d-flex justify-content-center ltext-center" style="cursor: pointer; height: 20%"> <div class="d-flex justify-content-center ltext-center" style="cursor: pointer; height: 20%">
<div class="m-3"> <div class="m-3">
<a class="btn" href="index.php?action=queuing" onclick="displayWaiting()"> <a class="btn" href="#" onclick="waiting()">
<span>LANCER</span> <span>LANCER</span>
</a> </a>
</div> </div>
@ -82,5 +82,27 @@
</div> </div>
</div> </div>
</body> </body>
<script src="View/src/JS/Queu.js"></script> <script>
function displayWaiting(){
document.getElementById("waiting").innerHTML = "Waiting for Coders...";
document.getElementsByClassName("btn").style.display = "none"
}
function checkIsReady() {
var xhr = new XMLHttpRequest();
xhr.open('POST', 'http://82.165.180.114/Scripted/WEB/index.php?action=waiting', true);
xhr.responseType = 'text';
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.onload = function () {
if (xhr.responseText == "1") {
window.location.href = 'http://82.165.180.114/Scripted/WEB/index.php?action=goToGame&idPartie="' + <?php echo $idPartie ?> + '"&index=1"'
}
};
xhr.send(null);
}
function waiting(){
displayWaiting();
var countdownTimer = setInterval('checkIsReady()', 1000);
}
</script>
</html> </html>

Loading…
Cancel
Save