Re: socket_write eats data - solved

From: Date: Sun, 14 Sep 2003 05:26:13 +0000
Subject: Re: socket_write eats data - solved
References: 1 2 3 4  Groups: php.general 
Request: Send a blank email to php-general+get-162544@lists.php.net to get a copy of this message
Wouldn't this multiple connections be a problem for php? IMHO one of the main draw backs of the PHP IMAP library is the fact that you have to open and close and imap connection for each page. That issue is multiplied ten fold in this scenario isn't it? Thomas Weber wrote:
No, it's TCP and a very uncomplicated protocol, everything is sent in clear text. Major problem is the socket-multicasting to keep track of all clients simultanly. ----- Original Message ----- From: "Raditha Dissanayake" <jabber@raditha.com> To: "Thomas Weber" <thomas@youngarts.org>; "PHP-List" <php-general@lists.php.net> Sent: Sunday, September 14, 2003 2:59 AM Subject: Re: [PHP] socket_write eats data - solved
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. -- 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 (#162544) next »