ID:               25309
 Updated by:       [EMAIL PROTECTED]
 Reported By:      flugelaar at pandora dot be
-Status:           Open
+Status:           Bogus
 Bug Type:         Sockets related
 Operating System: Linux Slackware 9.0
 PHP Version:      5CVS-2003-08-29 (dev)
 New Comment:

fgets() works in a greedy-read mode, so it will keep reading until it
gets the complete line (up to the size you requested).

If you are using multiple sockets, you should be using blocking sockets
and stream_select(), and not using fgets() but instead fread().




Previous Comments:
------------------------------------------------------------------------

[2003-08-29 06:38:04] flugelaar at pandora dot be

Description:
------------
Fgets() keeps blocking when I try to make a socket from
stream_socket_accept() non-blocking. The listening socket is also
non-blocking.

Reproduce code:
---------------
This code is still blocking on the fgets:

    $conn = @stream_socket_accept($hsock,1,&$host);
    if (!$conn) return;
    echo "Got connection from ".$host."\n";
    stream_set_blocking($conn,false);
    $get = '';
    $loop = 0;
    while ($loop <= 10) { $getl = trim(fgets($conn)); $loop++; if
(empty($getl)) { echo "End of headers\n"; break; }else{ $get .=
$getl."\n"; } }

This is the code that created the $hsock :

$hsock = stream_socket_server('tcp://'.$bind.':'.$port, $errno,
$errstr);
if (!$hsock) die ('Listening socket failed: '.$errstr);
if (!socket_set_blocking($hsock,false)) echo "Socket (listening) set
nonblock failed\n";

$bind is 0.0.0.0 and port is 3333

Expected result:
----------------
It shouldn't hang on the fgets() because this script handles two
sockets. And the other one times out when fgets() hangs untill
something is recieved.

Actual result:
--------------
Fgets() keeps blocking so my other connection times out.


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=25309&edit=1

Reply via email to