[Configuration] Multi connexions ???
Bonjour à toutes et à tous,
Je suis en train d'écrire un script php qui doit tourner en permanence dans le but de :
- recevoir une requête HTTP
- récupérer le flux de données (format XML)
- effectuer le traitement nécessaire
- renvoyer la réponse HTTP (format XML)
Pour l'instant mon programme fonctionne, mais ne gère qu'une seule connexion à la fois, voici son code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
|
<?
// Autorise l'exécution infinie du script, en attente de connexion.
set_time_limit(0);
// Active le vidage implicite des buffers de sortie, pour que nous
// puissions voir ce que nous lisons au fur et à mesure.
ob_implicit_flush();
$address = '192.168.1.15';
$port = 8061;
$ip = $_SERVER["REMOTE_ADDR"];
// Crée la socket
if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0) {
echo "socket_create() a échoué : raison : " . socket_strerror($sock) . "\n";
}
// Lie un nom à la socket
if (($ret = socket_bind($sock, $address, $port)) < 0) {
echo "socket_bind() a échoué : raison : " . socket_strerror ($ret) . "\n";
}
// Ouvre la socket sur le port
if (($ret = socket_listen($sock, 5)) < 0) {
echo "socket_listen() a échoué : raison : " . socket_strerror ($ret) . "\n";
}
do{
// Accepte la connexion
if (($msgsock = socket_accept($sock)) < 0) {
echo "socket_accept() a échoué : raison : " . socket_strerror ($msgsock) . "\n";
}
// Crée la socket
if (false === ($buf = socket_read($msgsock, 2048))) {
echo "socket_read() a échoué : raison : " . socket_strerror ($ret) . "\n";
}
/*
.
.
.
. [TRAITEMENT => utilisation de $buf et envoi du retour dans $flux]
.
.
.
*/
//Envoi du retour XML
$contentLength = strlen($flux);
$send = "HTTP/1.1 200 OK\n";
$send .= "Content-Type: text/xml; charset=utf-8\r\n";
$send .= "Content-Length: " . $contentLength . "\r\n\r\n";
$send .= $flux;
$send .= "\r\n";
socket_write($msgsock, $send, strlen($send));
socket_shutdown($msgsock,2);
socket_shutdown($sock,2);
}while(true);
?> |
Je voudrais maintenant que mon programme gère plusieurs connexions simultanées, mais je ne sais pas comment faire ???
Merci d'avance pour vos réponses!!
infos sur la solution adoptée
Je suis aussi interessé, pourrais-tu fournir la solution que tu as adopté s'il te plait ?