Re: socket_write eats data - solved
| From: | Raditha Dissanayake | 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 - solvedusesIs IRC UDP? Thomas Weber wrote:theHi, i've checked a hundred things before posting this question, but i forgotofmost important thing, the buffer. The 'eaten' writes were buffered by the network-kernel and sent as buncharray,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 unserializedfetched 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 dataHi, I am deveoping a chatserver in IRC-style in PHP. For communication it
clientsocket-multiplexing aka socket_select. So long so good, works perfectly. The problem is, than when i make several socket_write's to the same
lostwithout waiting about 0.1sec after each write, the written data gets
allsomewhere. 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
writesclients } 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
isn'tget 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
-- http://www.radinks.com/upload Drag and Drop File Uploader.-- 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.phpreally 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