Connexion permanente par socket

Miaow
Invité n'ayant pas de compte PHPfrance

26 févr. 2014, 23:55

Bonsoir à toutes et à tous !

J'essaie depuis maintenant une semaine d'ouvrir une connexion permanente par socket à l'aide de la fonction pfsockopen.

Pour s'assurer qu'elle fonctionne que je pense avoir compris qu'elle devait fonctionner, j'ai créé un petit script server.php qui dans une boucle infinie vérifie s'il reçoit des demandes de connexion, qu'il accepte ensuite avec socket_accept, et affiche un petit message pour me l'indiquer.

Avec un autre script originalement appelé client.php, je crée une connexion avec pfsockopen et... c'est tout.

Je lance ensuite 2-3 fois le script client.php et vérifie si plusieurs messages s'affichent sur le script du client.

Je m'attend à ce que, comme la connexion est sensé être permanente (ou tout du moins rester active après la fin du script), le script server.php n'affiche qu'un message (lors de la première exécution de client.php) mais ce n'est pas le cas, il reçoit une demande de connexion à chaque F5... :(

Aurais-je mal compris le fonctionnement de pfsockopen ?

Merci d'avance de vos réponses !

ViPHP
xTG
ViPHP | 7331 Messages

27 févr. 2014, 09:08

Je ne suis pas à l'aise avec les sockets mais ton serveur boucle à l'infinie sur accept non ?
Plutôt que cela fais le attendre sur accept puis boucler sur un envoi à l'infini d'un message au client.
En faisant F5 la première fois tu auras ton message de connexion + x messages reçus.
En faisant un second F5 si le socket est bien réutilisé correctement tu auras x messages seulement.

Miaow
Invité n'ayant pas de compte PHPfrance

28 févr. 2014, 00:10

Tout d'abord, merci de ta réponse !
J'ai finalement trouvé l'explication; Apache exécutant plusieurs processus php parallèlement, chacun d'eux à son propre socket, ce qui explique mes résultat incongrus...
Désolé du dérangement et bonne continuation !