parent
a69aa53951
commit
dafa397472
Binary file not shown.
Binary file not shown.
@ -1 +0,0 @@
|
||||
def ascii()
|
@ -1,23 +0,0 @@
|
||||
def cesar(msg, key):
|
||||
resultStr = ""
|
||||
key=key%26
|
||||
for char in msg:
|
||||
resultStr = resultStr + chr(ord(char) + key)
|
||||
return resultStr
|
||||
|
||||
def decrypteCesar(msg, key):
|
||||
resultStr = ""
|
||||
key=key%26
|
||||
for char in msg:
|
||||
resultStr = resultStr + chr(ord(char) - key)
|
||||
return resultStr
|
||||
|
||||
|
||||
def culdechouette(val):
|
||||
tab=[]
|
||||
for i in range(1,7):
|
||||
for j in range(i,7):
|
||||
for k in range(j,7):
|
||||
if(i+j+k==val):
|
||||
tab.append([i,j,k])
|
||||
return tab
|
@ -1,73 +0,0 @@
|
||||
<?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();
|
||||
|
@ -1,69 +0,0 @@
|
||||
<?php
|
||||
|
||||
class Queuing extends Threaded
|
||||
{
|
||||
private $m_inputs;
|
||||
private $m_outputs;
|
||||
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
// $this->m_inputs = $inputs;
|
||||
$this->m_outputs = new Threaded(); // we will store the results in here.
|
||||
}
|
||||
|
||||
|
||||
public function run()
|
||||
{
|
||||
global $port, $serverAdress, $rep, $vues, $BUFFER_SIZE;
|
||||
$userModel = new UserModel();
|
||||
// pas d'arrêt d'éxécution du script (No timeout)
|
||||
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");
|
||||
// connecter la socket à l'adresse ip et au port du serveur
|
||||
$result = socket_set_block($socket);
|
||||
if ($result === false) {
|
||||
echo "socket_set_block a échoué : " . socket_strerror(socket_last_error()) . "\n";
|
||||
} else {
|
||||
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");
|
||||
if ($result === false) {
|
||||
// La connexion de la socket à l'adresse et au port a échoué
|
||||
echo "socket_connect a échoué : " . socket_strerror(socket_last_error()) . "\n";
|
||||
} else {
|
||||
echo "socket_connect a réussi.\n";
|
||||
$request = "Queuing";
|
||||
$result = socket_write($socket, $request, strlen($request));
|
||||
if ($result === false) {
|
||||
echo "socket_write a échoué : " . socket_strerror(socket_last_error()) . "\n";
|
||||
} else {
|
||||
echo "socket_write a réussi.\n";
|
||||
}
|
||||
$response = "";
|
||||
// while (strcmp($response, "launchGame") != 0) {
|
||||
$i = 0;
|
||||
while ($i != 2) {
|
||||
$response = socket_read($socket, $BUFFER_SIZE);
|
||||
echo $response;
|
||||
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;
|
||||
}
|
||||
sleep(5);
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
# Accessors
|
||||
public function getResults() { return $this->m_outputs; }
|
||||
}
|
@ -1,123 +0,0 @@
|
||||
<?php
|
||||
require_once('./Config/Config.php');
|
||||
require_once('./Config/Autoload.php');
|
||||
require_once('./Model/RequestHandler.php');
|
||||
Autoload::charger();
|
||||
|
||||
global $serverAdress,$port,$playerNumberPerGame;
|
||||
|
||||
// pas d'arrêt d'éxécution du script (No timeout)
|
||||
|
||||
set_time_limit(0);
|
||||
|
||||
// pas de tamponisation de sortie (No output buffering)
|
||||
ob_implicit_flush();
|
||||
|
||||
// Créer une socket d'écoute
|
||||
|
||||
$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");
|
||||
if($socket===false)
|
||||
{
|
||||
echo "socket_create a échoué : " . socket_strerror(socket_last_error()) . "\n";
|
||||
} else {
|
||||
echo "socket_create a réussi.\n";
|
||||
}
|
||||
|
||||
// Attacher la socket à unde adresse ip et un port
|
||||
|
||||
$result = socket_bind($socket, $serverAdress, $port) or die("la socket n'a pas pu être attachée à l'adresse ip :".$serverAdress." et au port".$port." ERROR : ".socket_strerror(socket_last_error())."\n");
|
||||
if ($result === false) {
|
||||
// L'attachement de la socket à l'adresse et au port a échoué
|
||||
echo "socket_bind a échoué : " . socket_strerror(socket_last_error()) . "\n";
|
||||
} else {
|
||||
echo "socket_bind a réussi.\n";
|
||||
// L'attachement de la socket à l'adresse et au port a réussi
|
||||
}
|
||||
|
||||
$result=socket_set_block($socket) or die("N'a pas pu mettre la socket en mode bloquant ERROR : ".socket_strerror(socket_last_error())."\n");
|
||||
if ($result === false) {
|
||||
// La mise en mode bloquant de la socket a échoué
|
||||
echo "socket_set_block a échoué : " . socket_strerror(socket_last_error()) . "\n";
|
||||
} else {
|
||||
echo "socket_set_block a réussi.\n";
|
||||
// La mise en mode bloquant de la socket a réussi
|
||||
}
|
||||
|
||||
// tableau des sockets à surveiller en lecture
|
||||
$read=array($socket);
|
||||
|
||||
// tableau des sockets à surveiller en écriture
|
||||
|
||||
$write=array();
|
||||
|
||||
//tableau des sockets à surveiller parce qu'elles ont des erreurs
|
||||
|
||||
$except=array();
|
||||
|
||||
// reponse du serveur au client
|
||||
|
||||
$response='';
|
||||
|
||||
// requête du client au serveur
|
||||
|
||||
$request='';
|
||||
|
||||
$client=false;
|
||||
|
||||
while(true) {
|
||||
|
||||
// Commencer à écouter sur le port
|
||||
$result = socket_listen($socket, 10) or die ("N'a pas pu configurer l'écoute sur la socket ERROR : ".socket_strerror(socket_last_error())." (Serveur) \n");
|
||||
if ($result === false) {
|
||||
// L'écoute sur le port a échoué
|
||||
echo "socket_listen a échoué : " . socket_strerror(socket_last_error()) . " (Serveur)\n";
|
||||
} else {
|
||||
echo "socket listen sur le port :".$port." (Serveur)\n";
|
||||
// L'écoute sur le port a réussi
|
||||
}
|
||||
|
||||
//Si c'est une connection entrante, on la rajoute à la liste des sockets à surveiller
|
||||
if(in_array($socket,$read))
|
||||
{
|
||||
// Accepter la connection entrante
|
||||
$client=socket_accept($socket);
|
||||
if($client === false)
|
||||
{
|
||||
echo "N'a pas pu accepter la connection entrante ERROR : ".socket_strerror(socket_last_error())." (Serveur)\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
$read[]=$client;
|
||||
}
|
||||
// Ajouter la socket du client à la liste des sockets à surveiller
|
||||
}
|
||||
|
||||
var_dump($client);
|
||||
echo "socket_strerror(socket_last_error()) : ".socket_strerror(socket_last_error())." (Serveur)\n";
|
||||
|
||||
//si $client est dans le tableau des sockets à surveiller en lecture
|
||||
//Met la requête du client dans $request et verifie si la requête est valide
|
||||
//Si la requête est valide, éxécute la méthode du requestHandler correspondante
|
||||
//Sinon, envoie un message d'erreur au client
|
||||
if ($client != false) {
|
||||
if (in_array($client, $read)) {
|
||||
$request = socket_read($client, $BUFFER_SIZE);
|
||||
if ($request != false) {
|
||||
$requestHandler = new RequestHandler();
|
||||
if (method_exists($requestHandler, $request)) {
|
||||
$function=explode(' ',$request)[0];
|
||||
echo ($function." (Serveur) \n");
|
||||
$response = $requestHandler->$function($client, $request);
|
||||
echo 'response : '.$response." (Serveur)\n";
|
||||
// socket_write($client,$response,strlen($response));
|
||||
} else {
|
||||
$response = "Invalid request";
|
||||
socket_write($client,$response,strlen($response));
|
||||
}
|
||||
} else {
|
||||
$response = "Response is false";
|
||||
socket_write($client,$response,strlen($response));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in new issue