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 : Sélectionner tout - Visualiser dans une fenêtre à part
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!!