Re: socket_write eats data - solved

From: 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
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, but
even
if 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 run
with
standalone 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
-- http://www.radinks.com/upload Drag and Drop File Uploader.

« previous php.general (#162534) next »