Re: socket_write eats data - solved
| From: | Raditha Dissanayake | Date: | Sun, 14 Sep 2003 00:59:36 +0000 |
| Subject: | Re: socket_write eats data - solved | ||
| References: | 1 2 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-162534@lists.php.net to get a copy of this message | ||
Is IRC UDP?
Thomas Weber wrote:
Hi, i've checked a hundred things before posting this question, but i forgot the most important thing, the buffer. The 'eaten' writes were buffered by the network-kernel and sent as bunch of data. If too much data for the buffer is sent, the write is broken up and completed in the next bunch-of-data. My receive-script hasn't diplayed the raw output, but an unserialized array, fetched out of the received string. Maybe this will will help someone in future. Thomas 'Neo' Weber --- thomas@youngarts.org neo@gothic-chat.de ----- Original Message ----- From: "Thomas Weber" <thomas@youngarts.org> To: "PHP-List" <php-general@lists.php.net> Sent: Saturday, September 13, 2003 9:15 PM Subject: [PHP] socket_write eats data-- http://www.radinks.com/upload Drag and Drop File Uploader.Hi, I am deveoping a chatserver in IRC-style in PHP. For communication it uses socket-multiplexing aka socket_select. So long so good, works perfectly. The problem is, than when i make several socket_write's to the same client without waiting about 0.1sec after each write, the written data gets lost somewhere. socket_write does NOT throw any error, the data seams just sended, but the clients never receives it. Small example of the used code: ----- var $clients // array of 'client'-objects, each object has it's own socket-descriptor in the object-variable $socket function write_to_clients ($text) { for ($i = 0; $i < count ($this->clients); $i++) { socket_write ($this->clients[$i]->socket, $text); } // usleep (10000); if this is uncommented, all write are received by all clients } for ($i = 0; $i < 10; $i++) { $this->write_to_clients ("test ".$i); } ----- Okay, this doesn't check the client-sockets for readiness to write, butevenif I check (via socket_select), ALL clients are ready to write and writes get lost too. It can't be the network-connection, because the tests runwithstandalone PHP-clients on the same machine. Is there any possibility to make fast writes without waiting after each write? The wait limits the server to max. 10 writes per second, wich isn't really enaugh for a good chatserver. Thanks for your help! Thomas 'Neo' Weber --- thomas@youngarts.org neo@gothic-chat.de -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php