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