test thread
continuous-integration/drone/push Build is passing Details

ServeurDeTest
Noé GARNIER 2 years ago
parent 2124db558e
commit 7ba41afc46

@ -1,51 +1,48 @@
<?php <?php
require_once('./Config/Config.php'); require_once('./Config/Config.php');
require_once('./Config/Autoload.php'); require_once('./Config/Autoload.php');
Autoload::charger(); Autoload::charger();
global $port,$serverAdress,$rep,$vues, $BUFFER_SIZE; global $port, $serverAdress, $rep, $vues, $BUFFER_SIZE;
$userModel = new UserModel(); $userModel = new UserModel();
sleep(5); sleep(5);
// pas d'arrêt d'éxécution du script (No timeout) // pas d'arrêt d'éxécution du script (No timeout)
set_time_limit(0); set_time_limit(0);
$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("la socket n'a pas pu être créée ERROR : ".socket_strerror(socket_last_error())."\n"); $socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("la socket n'a pas pu être créée ERROR : " . socket_strerror(socket_last_error()) . "\n");
// connecter la socket à l'adresse ip et au port du serveur // connecter la socket à l'adresse ip et au port du serveur
$result = socket_set_block($socket); $result = socket_set_block($socket);
if($result === false) { if ($result === false) {
echo "socket_set_block a échoué : " . socket_strerror(socket_last_error()) . "\n"; echo "socket_set_block a échoué : " . socket_strerror(socket_last_error()) . "\n";
} else { } else {
echo "socket_set_block a réussi.\n"; echo "socket_set_block a réussi.\n";
} }
$result = socket_connect($socket, $serverAdress, $port) or die("Impossible de se connecter au serveur ERROR : ".socket_strerror(socket_last_error())."\n"); $result = socket_connect($socket, $serverAdress, $port) or die("Impossible de se connecter au serveur ERROR : " . socket_strerror(socket_last_error()) . "\n");
if ($result === false) { if ($result === false) {
// La connexion de la socket à l'adresse et au port a échoué // La connexion de la socket à l'adresse et au port a échoué
echo "socket_connect a échoué : " . socket_strerror(socket_last_error()) . "\n"; echo "socket_connect a échoué : " . socket_strerror(socket_last_error()) . "\n";
} else { } else {
echo "socket_connect a réussi.\n"; echo "socket_connect a réussi.\n";
$request="Queuing"; $request = "Queuing";
$result=socket_write($socket,$request,strlen($request)); $result = socket_write($socket, $request, strlen($request));
if($result === false) { if ($result === false) {
echo "socket_write a échoué : " . socket_strerror(socket_last_error()) . "\n"; echo "socket_write a échoué : " . socket_strerror(socket_last_error()) . "\n";
} else { } else {
echo "socket_write a réussi.\n"; echo "socket_write a réussi.\n";
}
$response = "";
while (strcmp($response, "launchGame") != 0) {
$response = socket_read($socket, $BUFFER_SIZE);
if ($response != false) {
echo "socket_read a réussi.\n";
if (strcmp($response, "refreshQueue") == 0) {
$userGroup = $userModel->findUsersInQueue();
$numberOfPlayer = count($userGroup);
header('Location : ' . $rep . $vues['queue']);
} }
$response=""; } else {
while(strcmp($response,"launchGame")!=0){ echo "socket_read a échoué : " . socket_strerror(socket_last_error()) . "\n";
$response=socket_read($socket, $BUFFER_SIZE); break;
if($response!=false)
{
echo "socket_read a réussi.\n";
if(strcmp($response,"refreshQueue")==0)
{
$userGroup = $userModel->findUsersInQueue();
$numberOfPlayer=count($userGroup);
header('Location : '.$rep.$vues['queue']);
}
}
else{
echo "socket_read a échoué : " . socket_strerror(socket_last_error()) . "\n";
break;
}
} }
} }
}

@ -1,60 +1,59 @@
<?php <?php
class Client{ class Client
{
private static $instance; private static $instance;
private $socket; private $socket;
public static function getInstance() { public static function getInstance()
{
if (self::$instance === null) { if (self::$instance === null) {
self::$instance = new self(); self::$instance = new self();
} }
return self::$instance; return self::$instance;
} }
public function Queuing(){ public function Queuing()
global $port,$serverAdress,$rep,$vues, $BUFFER_SIZE; {
global $port, $serverAdress, $rep, $vues, $BUFFER_SIZE;
$userModel = new UserModel(); $userModel = new UserModel();
sleep(5);
// pas d'arrêt d'éxécution du script (No timeout) // pas d'arrêt d'éxécution du script (No timeout)
set_time_limit(0); set_time_limit(0);
$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("la socket n'a pas pu être créée ERROR : ".socket_strerror(socket_last_error())."\n"); $socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("la socket n'a pas pu être créée ERROR : " . socket_strerror(socket_last_error()) . "\n");
// connecter la socket à l'adresse ip et au port du serveur // connecter la socket à l'adresse ip et au port du serveur
$result = socket_set_block($socket); $result = socket_set_block($socket);
if($result === false) { if ($result === false) {
echo "socket_set_block a échoué : " . socket_strerror(socket_last_error()) . "\n"; echo "socket_set_block a échoué : " . socket_strerror(socket_last_error()) . "\n";
} else { } else {
echo "socket_set_block a réussi.\n"; echo "socket_set_block a réussi.\n";
} }
$result = socket_connect($socket, $serverAdress, $port) or die("Impossible de se connecter au serveur ERROR : ".socket_strerror(socket_last_error())."\n"); $result = socket_connect($socket, $serverAdress, $port) or die("Impossible de se connecter au serveur ERROR : " . socket_strerror(socket_last_error()) . "\n");
if ($result === false) { if ($result === false) {
// La connexion de la socket à l'adresse et au port a échoué // La connexion de la socket à l'adresse et au port a échoué
echo "socket_connect a échoué : " . socket_strerror(socket_last_error()) . "\n"; echo "socket_connect a échoué : " . socket_strerror(socket_last_error()) . "\n";
} else { } else {
echo "socket_connect a réussi.\n"; echo "socket_connect a réussi.\n";
$request="Queuing"; $request = "Queuing";
$result=socket_write($socket,$request,strlen($request)); $result = socket_write($socket, $request, strlen($request));
if($result === false) { if ($result === false) {
echo "socket_write a échoué : " . socket_strerror(socket_last_error()) . "\n"; echo "socket_write a échoué : " . socket_strerror(socket_last_error()) . "\n";
} else { } else {
echo "socket_write a réussi.\n"; echo "socket_write a réussi.\n";
} }
$response=""; $response = "";
while(strcmp($response,"launchGame")!=0){ while (strcmp($response, "launchGame") != 0) {
$response=socket_read($socket, $BUFFER_SIZE); $response = socket_read($socket, $BUFFER_SIZE);
if($response!=false) if ($response != false) {
{
echo "socket_read a réussi.\n"; echo "socket_read a réussi.\n";
if(strcmp($response,"refreshQueue")==0) if (strcmp($response, "refreshQueue") == 0) {
{
$userGroup = $userModel->findUsersInQueue(); $userGroup = $userModel->findUsersInQueue();
$numberOfPlayer=count($userGroup); $numberOfPlayer = count($userGroup);
header('Location : '.$rep.$vues['queue']); header('Location : ' . $rep . $vues['queue']);
} }
} } else {
else{
echo "socket_read a échoué : " . socket_strerror(socket_last_error()) . "\n"; echo "socket_read a échoué : " . socket_strerror(socket_last_error()) . "\n";
break; break;
} }
} }
} }
} }
} }

@ -0,0 +1,73 @@
<?php
class MyTask extends Threaded
{
private $m_inputs;
private $m_outputs;
public function __construct(array $inputs)
{
$this->m_inputs = $inputs;
$this->m_outputs = new Threaded(); // we will store the results in here.
}
public function run()
{
foreach ($this->m_inputs as $input)
{
// casting the array to an array is not a mistake
// but actually super important for this to work
// https://github.com/krakjoe/pthreads/issues/813#issuecomment-361955116
$this->m_outputs[] = (array)array(
'property1' => $input * 2,
'property2' => ($input + 2),
);
}
}
# Accessors
public function getResults() { return $this->m_outputs; }
}
function main()
{
$inputs = range(0,10000);
$numInputsPerTask = 20;
$inputGroups = array_chunk($inputs, $numInputsPerTask);
$numCpus = 4; // I would nomrally dynamically fetch this and sometimes large (e.g. aws C5 instances)
$numTasks = count($inputGroups);
$numThreads = min($numTasks, $numCpus); // don't need to spawn more threads than tasks.
$pool = new Pool($numThreads);
$tasks = array(); // collection to hold all the tasks to get the results from afterwards.
foreach ($inputGroups as $inputsForTask)
{
$task = new MyTask($inputsForTask);
$tasks[] = $task;
$pool->submit($task);
}
while ($pool->collect());
# We could submit more stuff here, the Pool is still waiting for work to be submitted.
$pool->shutdown();
# All tasks should have been completed at this point. Get the results!
$results = array();
foreach ($tasks as $task)
{
$results[] = $task->getResults();
}
print "results: " . print_r($results, true);
}
main();

@ -171,11 +171,11 @@ class UserController
{ {
try { try {
global $rep, $vues, $error; //$serverAdress,$port; global $rep, $vues, $error; //$serverAdress,$port;
require($rep . $vues['queue']);
$model = new UserModel(); $model = new UserModel();
$model->addToQueue(); $model->addToQueue();
$client = Client::getInstance(); $client = Client::getInstance();
$client->Queuing(); $client->Queuing();
require($rep . $vues['queue']);
} catch (Exception $e) { } catch (Exception $e) {
$error = $e->getMessage(); $error = $e->getMessage();
require($rep . $vues['erreur']); require($rep . $vues['erreur']);

@ -27,12 +27,12 @@ class UserModel
public function addToQueue() public function addToQueue()
{ {
echo '1'; echo '1';
if ($this->utilisateur_gateway->isAlreadyInqueue($_SESSION['utilisateur'])) { $utilisateur = $_SESSION['utilisateur'];
if ($this->utilisateur_gateway->isAlreadyInqueue($utilisateur)) {
var_dump($this->utilisateur_gateway->queueFilled()); var_dump($this->utilisateur_gateway->queueFilled());
if($this->utilisateur_gateway->queueFilled()) if($this->utilisateur_gateway->queueFilled())
{ {
$_REQUEST['action']='launchGame'; header('Location: index.php?action=launchGame');
var_dump($_REQUEST['action']);
} }
return; return;
} }
@ -52,7 +52,7 @@ class UserModel
echo '7'; echo '7';
} }
echo '8'; echo '8';
$this->utilisateur_gateway->addToQueue($_SESSION['utilisateur'], $partie); $this->utilisateur_gateway->addToQueue($utilisateur, $partie);
} }
public function findUserGroup() : int { public function findUserGroup() : int {

Loading…
Cancel
Save