Re: Bug in stream_socket_server()?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Would this class as a test?

<?php
$socket = stream_socket_server("tcp://0.0.0.0:8000", $errno, $errstr);
if (!$socket) {
echo "$errstr ($errno)<br />\n";
} else {
while (is_resource($conn = stream_socket_accept($socket, 30))) {
while (is_resource($conn) && $pkt = stream_get_line($conn, 1000000, "\n")) {
fwrite($conn, '>>>>');
sleep(10);
echo $pkt;
}
}
}
?>

I then sent 2*384kb loads per second through a terminal to it without problems, 10 minutes since i stopped writing data to it and it's still echoing out 1 line every 10 secs!

Nathan

René Fournier wrote:
"If you want a high speed socket server, use the low-level sockets instead (socket_create/bind/listen). The stream_socket_server version appears to have internal fixed 8k buffers that will overflow if you don't keep up by reading.

This is a serious problem if you an application that reads the socket for messages and then, say, saves the result in a database. The delay while it is busy processing means you can't read the data in time unless you get involved in muti-threading.

With the the low-level functions, the OS quietly buffers TCP/IP packets so there is no problem (tested on Windows XP Professional)."

( http://php.oregonstate.edu/manual/en/function.stream-socket-server.php#67837 )


Has anyone confirmed this? I am doing tests with a stripped-down multi-client socket server, wonder if this issue is causing some of the problems I've seen.

...Rene

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux