Re: socket_select() problems?

From: Date: Sun, 02 Jun 2002 03:13:41 +0000
Subject: Re: socket_select() problems?
References: 1  Groups: php.dev 
Request: Send a blank email to php-dev+get-84684@lists.php.net to get a copy of this message
Andrei solved it. It is because socket_select() mangles the passed arrays so when you re-enter the call with the mangled $read array you are now only checking the sockets that happened to trigger the first time through. It means you actually have to do: $read = array($sock1,$sock2); $copy = $read; while($num=socket_select($copy, $write=NULL, $except=NULL, NULL)) { for($i=0; $i<$num; $i++) { usleep(500); $msg = socket_read($copy[$i],1024); echo "[$i] ".strlen($msg)."\n"; } $copy = $read; } So you save the original array of sockets to pass back in. This is why the C API has FD_ISSET() to check the result of a select(). I really don't like this current behaviour of socket_select(). It will confuse the hell out of anybody coming at this from a C background. -Rasmus On Sun, 2 Jun 2002, Philip Olson wrote: > I only get [0], never [1]. Did about 40 tries. > > latest CVS > ./configure --enable-sockets > > If you need more info, let me know. > > Regards, > Philip Olson > > >

« previous php.dev (#84684) next »