ID: 34972
Updated by: sniper@php.net
Reported By: VJTD3 at VJTD3 dot com
-Status: Open
+Status: Assigned
Bug Type: CGI related
-Operating System: Windows/Linux
+Operating System: *
-PHP Version: 5.0.5
+PHP Version: 5CVS-2005-11-09 (snap)
Assigned To: wez
New Comment:
Assigned to the streams maintainer.
Previous Comments:
------------------------------------------------------------------------
[2005-11-09 20:19:26] VJTD3 at VJTD3 dot com
no change, the bug is the same.
------------------------------------------------------------------------
[2005-11-06 23:19:43] sniper@php.net
Please try using this CVS snapshot:
http://snaps.php.net/php5-latest.tar.gz
For Windows:
http://snaps.php.net/win32/php5-win32-latest.zip
------------------------------------------------------------------------
[2005-10-31 16:38:53] sniper@php.net
Assigned to the streams maintainer.
------------------------------------------------------------------------
[2005-10-25 04:23:31] VJTD3 at VJTD3 dot com
<?php
# Make life easier to test bothe versions
# option:
# 1: Yahoo HTTP example
# 2: STDIN example.
$test = 1;
# note for php4 or lower:
# STDIN isn't a defined "constant" so uncomment this.
#define('STDIN', fopen('php://stdin', 'r'));
# ment to paste fread was playing with other methods and
# just pasted the wrong version. The result is the same.
# notice how after the data is done it's still going and
# not blocked.
if($test == '1') {
$demo = fsockopen('yahoo.com', 80);
stream_set_blocking($demo, FALSE);
fwrite($demo, 'GET /'."\n\n");
while (1) {
$data = fread($demo, 1500);
echo (strlen($data) ? 'read:'.$data :
"\nread:".'empty'."\n");
sleep(1);
}
}
# same code with fread and blocked reguardless of setting
# to nonblocked.
if($test == '2') {
echo 'Watch me stall till you type enter I\'m blocking you!'."\n";
stream_set_blocking(STDIN, FALSE);
while (1) {
$data = fread(STDIN, 10);
# I do know I could use trim, but if blocking was
# working it will act weird if it's mid of a end of
# line.
$data = str_replace("\n", '', $data);
$data = str_replace("\r", '', $data);
echo (strlen($data) ? 'read:'.$data :
"\nread:".'empty'."\n");
sleep(1);
}
}
# stream_select() can't be used, when i try the file
# descriptor just gets locks and all future selects won't
# work. and there is no reason to even select i know what
# resource to monitor i just need blocking to stop so i
# can monitor and process as i need just liek in the
# yahoo http example.
?>
------------------------------------------------------------------------
[2005-10-25 01:26:58] wez@php.net
FYI, using fgets() with a non-blocking resource makes no sense.
To implement what you're after, use stream_select() and fread(); these
work on stdin just fine.
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
http://bugs.php.net/34972
--
Edit this bug report at http://bugs.php.net/?id=34972&edit=1