ID: 24101
Updated by: [EMAIL PROTECTED]
Reported By: wzaccone at telcordia dot com
-Status: Open
+Status: Bogus
Bug Type: Sockets related
Operating System: Solaris 5.8 / Sparc
PHP Version: 4.3.2
New Comment:
Looking at the CVS history, there is no way that your code should work
in 4.1.2 (socket_select() didn't even accept arrays as parameters back
then), nor even in 4.2.x (which only accepted the socket extensions own
descriptors). The chances are that it only worked as a fluke.
The sockets extension has always been documented as experimental, so
functionality change from flaky code that is 18 months old is allowed,
without notice.
It is highly recommended that you update your code to use the
stream_select() function provided in PHP 4.3.x, as it is more flexible
and an officially supported (stable!) API.
This is not a bug in PHP, so I'm marking this report as Bogus.
Previous Comments:
------------------------------------------------------------------------
[2003-06-10 09:23:25] wzaccone at telcordia dot com
thank you for the info.. we were previously using socket_select and
fread successfully with 4.1.2 and went live with an application doing
so. For our next release, we upgraded to PHP 4.3.2 and it stopped
working. Can I assume that this behavior has changed with 4.3.2??
therefore we must migrate to using streams_select to upgrade to 4.3.2?
------------------------------------------------------------------------
[2003-06-10 09:19:12] [EMAIL PROTECTED]
You can't use fread() on sockets returned from the sockets extension,
and likewise, you can use socket_select() on streams returned from
fopen() or fsockopen().
Perhaps you meant to use stream_select() instead?
------------------------------------------------------------------------
[2003-06-10 09:02:26] wzaccone at telcordia dot com
function readMsgsFromHosts($sockets){
set_time_limit(0);
$numSockets = count($sockets);
$keys = array_keys($sockets);
$socketsCopy = Array();
foreach ($keys as $key){
$socketsCopy[$key] = $sockets[$key];
}
if (@socket_select($socketsCopy, $w = NULL, $e = NULL, $tv = NULL)
!== FALSE){
foreach($socketsCopy as $sock){
$string = fread($sock, $readAmount);
------------------------------------------------------------------------
[2003-06-09 23:40:31] [EMAIL PROTECTED]
Could you give a complete (but short, please) script
that shows this problem clearly..? (can't reproduce, but I'm propably
missing some part here..)
------------------------------------------------------------------------
[2003-06-09 14:02:38] wzaccone at telcordia dot com
we upgraded our application from php 4.1.2 to 4.3.2 and are testing.
and found the following code no longer works:
if (@socket_select($socketsCopy, $w = NULL, $e = NULL, $tv = NULL) !==
FALSE){
foreach($socketsCopy as $sock){
The socket_select call appears to be never returning with php 4.3.2..
code worked correctly with 4.1.2.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=24101&edit=1