Pour faire vite, j'envoie des données (souvent) avec
stream_socket_sendto mais le soucis c'est que du coté reception, je n'ai
pas toujours tout. Une capture avec wireshark et je vois un TCP window
full. Après une petite recherche sur google, il semblerai que le client
(reception) n'arrive pas à traiter les data aussi vite sur le serveur
(émission) les envois.
Ma question : peut on gérer cela du coté serveur (émission) en php avec
une fonction, une entête, un petit quelque chose quoi ???
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Olivier Miakinen
Bonjour,
Le 06/11/2009 21:03, bertrand a écrit :
Pour faire vite, j'envoie des données (souvent) avec stream_socket_sendto mais le soucis c'est que du coté reception, je n'ai pas toujours tout. Une capture avec wireshark et je vois un TCP window full. Après une petite recherche sur google, il semblerai que le client (reception) n'arrive pas à traiter les data aussi vite sur le serveur (émission) les envois.
Ma question : peut on gérer cela du coté serveur (émission) en php avec une fonction, une entête, un petit quelque chose quoi ???
D'après mes souvenirs de TCP, tu ne devrais rien avoir à faire, c'est le protocole qui devrait tout gérer. Sauf bien sûr si tu quittes le script avant que tout ne soit transféré, mais il me semble que c'est le rôle de la fonction fclose() de ne te rendre la main que lorsque tout a été transmis (ou après un timeout, mais il peut être relativement long). Tu fais bien un fclose() avant de faire exit() ou d'arriver au bout du script ? Par ailleurs, la socket est-elle ouverte en mode non bloquant ?
Enfin, saurais-tu écrire un code minimal qui présente le même bug, et le joindre à une prochaine réponse ?
-- Olivier Miakinen
Bonjour,
Le 06/11/2009 21:03, bertrand a écrit :
Pour faire vite, j'envoie des données (souvent) avec
stream_socket_sendto mais le soucis c'est que du coté reception, je n'ai
pas toujours tout. Une capture avec wireshark et je vois un TCP window
full. Après une petite recherche sur google, il semblerai que le client
(reception) n'arrive pas à traiter les data aussi vite sur le serveur
(émission) les envois.
Ma question : peut on gérer cela du coté serveur (émission) en php avec
une fonction, une entête, un petit quelque chose quoi ???
D'après mes souvenirs de TCP, tu ne devrais rien avoir à faire, c'est le
protocole qui devrait tout gérer. Sauf bien sûr si tu quittes le script
avant que tout ne soit transféré, mais il me semble que c'est le rôle de
la fonction fclose() de ne te rendre la main que lorsque tout a été
transmis (ou après un timeout, mais il peut être relativement long).
Tu fais bien un fclose() avant de faire exit() ou d'arriver au bout du
script ? Par ailleurs, la socket est-elle ouverte en mode non bloquant ?
Enfin, saurais-tu écrire un code minimal qui présente le même bug, et le
joindre à une prochaine réponse ?
Pour faire vite, j'envoie des données (souvent) avec stream_socket_sendto mais le soucis c'est que du coté reception, je n'ai pas toujours tout. Une capture avec wireshark et je vois un TCP window full. Après une petite recherche sur google, il semblerai que le client (reception) n'arrive pas à traiter les data aussi vite sur le serveur (émission) les envois.
Ma question : peut on gérer cela du coté serveur (émission) en php avec une fonction, une entête, un petit quelque chose quoi ???
D'après mes souvenirs de TCP, tu ne devrais rien avoir à faire, c'est le protocole qui devrait tout gérer. Sauf bien sûr si tu quittes le script avant que tout ne soit transféré, mais il me semble que c'est le rôle de la fonction fclose() de ne te rendre la main que lorsque tout a été transmis (ou après un timeout, mais il peut être relativement long). Tu fais bien un fclose() avant de faire exit() ou d'arriver au bout du script ? Par ailleurs, la socket est-elle ouverte en mode non bloquant ?
Enfin, saurais-tu écrire un code minimal qui présente le même bug, et le joindre à une prochaine réponse ?