CLIENT / SERVEUR : LES SOCKETS

Signaler
Messages postés
608
Date d'inscription
samedi 3 août 2002
Statut
Membre
Dernière intervention
22 décembre 2016
-
Messages postés
571
Date d'inscription
vendredi 30 décembre 2005
Statut
Membre
Dernière intervention
12 juillet 2012
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/53099-client-serveur-les-sockets

Messages postés
571
Date d'inscription
vendredi 30 décembre 2005
Statut
Membre
Dernière intervention
12 juillet 2012
3
en PHP il n'y a pas de threads mais apparemment il existe un autre modèle d'I/O : select() qui permet de gérer plusieurs sockets sans bloquer sur read ou write. Select() est un appel système très puissant permettant le multiplexages d'entrées/sorties asynchrones. En C c'est un régal.
Messages postés
255
Date d'inscription
vendredi 20 avril 2007
Statut
Membre
Dernière intervention
9 août 2013
3
Oui seulement il n'y a pas de gestion native des thread en PhP :(

Par contre on peu utiliser pcntl_fork puis créer une thread pool mais ca aurai rendu la source trop complexe, mon but c'est de laisser implémenter le comportement:)
Messages postés
226
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
3 juillet 2014
1
Code intéressant !

petite remarque :
la méthode loop de ton client : tu fais un appel récursif sur $this->loop
le problème est que lorsque tu fais un appel récursif, il empile sur le tas tes appels les un après les autres.
Et à un moment donné, ta mémoire sera pleine --> et crack !

il vaut mieux utiliser une boucle while...

public function loop()
{
while ($this->continue)
{
...

$this->listen();

...
}
}

autre remarque :
généralement, sur ce genre de code (qui existe plus en java), on utilise des threads.

Cordialement,
Gigatrappeur
Messages postés
255
Date d'inscription
vendredi 20 avril 2007
Statut
Membre
Dernière intervention
9 août 2013
3
Ahh peu être que ton hébergeur bloque l'ouverture de on port alors non ?

Moi je teste en local alors forcement ca marche mais je suis pas sur que tu puisse ouvrir une socket serveur sur n'importe quel port chez un hébergeur classique enfin c'est une idée ^^
Afficher les 15 commentaires