[websocket] la fonction socket_recv bloque a 1024 caratères en réception

Neoxen
Invité n'ayant pas de compte PHPfrance

02 août 2018, 09:55

Bonjour à tous !!

Je me suis mis aux websocket il ya quelques temps et je bloque sur un problème de réception de data quand celui ci depasse 1024 caratères.


while(false !== ($byteReceive = socket_recv($this->clientApplication->getUserSocket(), $bufferData, 9999999 , MSG_DONTWAIT))){
if($byteReceive===0) $this->disconnect($this->clientApplication);
if($byteReceive<1) break;
$data.=$bufferData;
$totalByteReceive+=$byteReceive;
}

j'ai essayer de mettre la veleur de length a 9999999 afin de mettre une limite haute, mais dès que j'atteint le 2015 ième caratères, le socket se bloque et je ne sait pas pourquoi.

La handshake se fait parfaitement, les données transite nickel entre le socket et le site mais je ne comprend pas comment envoyé de grande quantité de data

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

05 août 2018, 22:52

Certains serveurs ont une limitation de la taille de chaque envoi.
Par exemple pour les serveurs node.js, il y a un paramètre de configuration "maxpayload" qui permet de faire cela.

Je n'ai pas trouvé de limitation comme celle là en PHP, mais peut être faut il regarder au niveau de la conf Apache.
Tu devrais essayer aussi sur un autre serveur pour voir si le problème est le même ou si c'est spécifique à une configuration de ton serveur
Quand tout le reste a échoué, lisez le mode d'emploi...